updates.
[silc.git] / CHANGES
1 Wed Mar 14 17:31:28 EET 2007  Pekka Riikonen <priikone@silcnet.org>
2
3         * In notify handling resolve user entries many times if the
4           resolving timedout.  Affected file lib/silcclient/client_notify.c.
5
6         * silc_client_get_clients_local do not return any invalid entries.
7           Affected file is lib/silcclient/client_entry.c.
8
9         * Do not print "there are now xx user on this channel" for users
10           that actually aren't anymore on the channel.  Affected file
11           is apps/irssi/src/client_ops.c.
12
13 Sun Mar 11 17:43:18 CET 2007  Jochen Eisinger <coffee@silcnet.org>
14
15         * When joining channels with a password given in the config file,
16           use it.  Also use it when cycling (it would be better to get
17           the password from the server, but this isn't possible in SILC).
18           Affected files apps/irssi/src/silc/core/silc-servers.c,
19           apps/irssi/src/silc/core/silc-channels.c
20
21 Sun Mar 11 15:22:42 CET 2007  Jochen Eisinger <coffee@silcnet.org>
22
23         * Import perl script for sign_messages from silc-plugin.  Affected
24           file apps/irssi/scripts/silc.pl
25
26 Sun Mar 11 15:19:10 CET 2007  Jochen Eisinger <coffee@silcnet.org>
27
28         * Only wait for a nick on connecting, when it differs
29           (not counting case) from the username.  Affected file
30           is apps/irssi/src/silc/core/silc-servers.c
31
32 Sun Mar 11 13:50:53 CET 2007  Jochen Eisinger <coffee@silcnet.org>
33
34         * Use time settings for lag settings.  Affected file is
35           apps/irssi/src/silc/core/silc-lag.c
36
37 Tue Feb 27 17:07:34 EET 2007  Pekka Riikonen <priikone@silcnet.org>
38
39         * Added silc_thread_yield.  Affected file is 
40           lib/silcutil/silcmutex.h.
41
42 Wed Feb 21 17:01:01 EET 2007  Pekka Riikonen <priikone@silcnet.org>
43
44         * Fixed WHOIS command and requested attributes handling in
45           client library.  Affected files are lib/silcclient/command.c
46           and lib/silcclient/client_attrs.c.
47
48         * Fixed silc_time_value to actually work.  Added new function
49           silc_timezone.  Affected files are lib/silcutil/silctime.[ch].
50
51 Tue Feb 20 08:31:28 EET 2007  Pekka Riikonen <priikone@silcnet.org>
52
53         * SILC Client 1.1 beta2.
54
55 Mon Feb 19 16:06:27 EET 2007  Pekka Riikonen <priikone@silcnet.org>
56
57         * Fixed client to properly abort TCP stream creation when
58           giving /QUIT.  Affected file 
59           apps/irssi/src/silc/core/silc-servers.c.
60
61         * Fixed several connecting aborting crashes from the client
62           library, packet engine and socket stream.  Affected files
63           are in lib/silclient/, lib/silccore/silcpacket.c and
64           lib/silcutil/unix/silcunixsocketstream.c.
65
66         * Fixed private key export double free crash in key generation.
67           Affected file is lib/silccrypt/silcpk.c.
68
69         * Fixed FSM event waiting when there are multiple signallers
70           and the waiter goes away after the first signal.  Affected
71           file in lib/silcutil/silcfsm.c.
72
73 Sun Feb 18 22:02:22 EET 2007  Pekka Riikonen <priikone@silcnet.org>
74
75         * Fixed FSM event signalling to check if the waiter has gone
76           away already.  Affected file is lib/silcutil/silcfsm.c.
77
78         * Fixed counter mode encryption/decryption to handle non-padded
79           SILC packets correctly.  The silc_cipher_set_iv now
80           in counter mode resets for a new block.  Affected files are
81           in lib/silcske/, lib/silccrypt/, lib/silcpacket/.
82
83 Sun Feb 18 12:15:21 EET 2007  Pekka Riikonen <priikone@silcnet.org>
84
85         * SILC Client 1.1 beta1.
86
87         * Memory leak fixes around the libraries.
88
89 Fri Feb 16 16:53:16 EET 2007  Pekka Riikonen <priikone@silcnet.org>
90
91         * Added better check for epoll() in configure.  Affected file
92           is lib/configure.ad.
93
94 Thu Feb 15 16:50:34 EET 2007  Pekka Riikonen <priikone@silcnet.org>
95
96         * Fixed per scheduler data input buffer in packet engine.  Use
97           list of inbufs instead of just one so that multiple streams
98           can do partial reads to different buffers.  Affected file is
99           lib/silccore/silcpacket.c.
100
101         * Fixed WATCH notify handling in client library.  Affected file
102           is lib/silcclient/client_notify.c.
103
104 Wed Feb 14 17:05:38 EET 2007  Pekka Riikonen <priikone@silcnet.org>
105
106         * Fixed packet wrapper stream API to support encoder/decoder
107           for packets, and to handle partial reading correctly.  Fixed
108           also inbuf size checking in reading to have enough space before
109           reading.  Affected files are lib/silccore/silcpacket.[ch].
110
111         * Rewrote file transfer in client library.  Affected files are
112           in lib/silcclient/.
113
114         * Added TCP/UDP listener (internal) API to client library to have
115           generic way of dealing with listeners.  Fixed Key Agreement and
116           file transfer to use it.  Affected files are in lib/silcclient/.
117
118         * Fixed SKE to process SUCCESS packets synchronously and to call
119           completion synchronously.  Affected file is lib/silcske/silske.c.
120
121         * Fixed pthread rwlock detection.  Affected file includes/silc.h.in.
122
123         * Implemented SILC_ATTRIBYUTE_PHONE_NUMBER.  Affected files are
124           lib/silccore/silcattrs.[ch].  SILC Protocol version 1.3 change.
125
126 Fri Feb  2 22:24:11 EET 2007  Pekka Riikonen <priikone@silcnet.org>
127
128         * Added support for SILC protocol version 1.3 NEW_CLIENT packet
129           to client library.  Affected file is
130           lib/silcclient/client_register.c.
131
132         * Serialize NICK and JOIN commands to avoid problems locally
133           with changing ID while joining to channel.  Affected file is
134           lib/silcclient/command.c.
135
136         * Fixed entry resolving while handling incoming JOIN notify.
137           Handle properly cases, in re-processing of notify packets, where
138           the IDs may become invalid while resolving the entry (like nick
139           change).  Entry is invalid if it doesn't have nickname, and such
140           entries are not delivered to application anymore.  These fixes
141           problems of not seeing JOINs when remote user changes nickname
142           at the same time.  Affected files are in lib/silcclient/.
143
144 Thu Feb  1 18:35:58 EET 2007  Pekka Riikonen <priikone@silcnet.org>
145
146         * Added support for computing message payload MAC in new way
147           (SILC Protocol version 1.3).  Bakcwards support for old way
148           remains.  Affected files are lib/silccore/silcmessage.[ch].
149
150 Sat Jan 27 22:37:30 EET 2007  Pekka Riikonen <priikone@silcnet.org>
151
152         * Added SilcRwLock API, a read/write lock.  Affected files are
153           lib/silcutil/silcmutex.h and in lib/silcutil/[unix|win32|symbian]/.
154
155 Wed Jan 24 18:55:21 EET 2007  Pekka Riikonen <priikone@silcnet.org>
156
157         * Merged Irssi SVN (irssi 0.8.11).  Affected files in apps/irssi/.
158
159 Tue Jan 23 16:05:27 EET 2007  Pekka Riikonen <priikone@silcnet.org>
160
161         * The silc_schedule_set_listen_fd now returns boolean value.
162           Fixed FD task adding to check correctly for already added
163           FD tasks.  Added stricter error checking for FD scheduling
164           with epoll().  Affected files are lib/silcutil/silcschedule.[ch]
165           and lib/silcutil/unix/silcunixschedule.c.
166
167         * The silc_stream_set_notifier now returns boolean value.  Changed
168           all streams to support and check for the error condition.
169           Affected files are in lib/silcutil/.
170
171         * Fixed SKE library session aborting and deletion.  Affected
172           file are lib/silcske/silcske.c.
173
174 Tue Jan 16 18:22:08 EET 2007  Pekka Riikonen <priikone@silcnet.org>
175
176         * Implemented PKCS #1 with appendix with hash OID in the
177           signature.  Affected files are lib/silccrypt/silcpkcs1.[ch],
178           lib/silccrypt/silchash.[ch] and
179           lib/silcasn1/silcasn1[_encode|decode].[ch].
180
181 Sun Jan 14 23:12:41 EET 2007  Pekka Riikonen <priikone@silcnet.org>
182
183         * Added support for Version (V) SILC public key identifier.
184           Affected files are lib/silccrypt/silcpk.[ch].
185
186 Tue Jan  9 19:37:51 EET 2007  Pekka Riikonen <priikone@silcnet.org>
187
188         * Rewrote connection auth request in client library.  It is now
189           done automatically by the library and the resolved method given
190           as a hint to get_auth_method client operation.  Affected files
191           are lib/silcclient/.
192
193 Wed Jan  3 18:06:33 EET 2007  Pekka Riikonen <priikone@silcnet.org>
194
195         * Added silc_packet_stream_wrap into lib/silccore/silcpacket.[ch].
196           It can be used to wrap SilcPacketStream into SilcStream.
197
198         * Fixed %p formatting from silc_snprintf.  Affected file is
199           lib/silcutil/silcsnprintf.c.
200
201         * Ported SFTP library to new utility library.  Ported also
202           the SFTP testers.  Affected files in lib/silcsftp/.
203
204 Tue Jan  2 17:18:46 EET 2007  Pekka Riikonen <priikone@silcnet.org>
205
206         * Added lib/silcutil/silcsnprintf.[ch].  Added in addition
207           of silc_snprintf, silc_vsnprintf, silc_asprintf and
208           silc_vasprintf.
209
210 Sat Dec 30 23:23:17 EET 2006  Pekka Riikonen <priikone@silcnet.org>
211
212         * Added preliminary Symbian support.  Changes around the source
213           tree.  The symbian/ directory now includes Carbide.c++ project
214           files to compile the sources.
215
216         * Added silc_snprintf.  Affected files are
217           lib/silcutil/silcstrutil.[ch].
218
219 Thu Dec 21 18:01:51 EET 2006  Pekka Riikonen <priikone@silcnet.org>
220
221         * Changed SILC_FSM_[CONTINUE|YIELD|WAIT|FINISH] enums to
222           macros.  SILC_FSM_CONTINUE macro now immediately calls the
223           next state instead of first returning back to FSM.  Helps
224           in debugging crashes etc.
225
226           Removed FSM Semaphores.  Introduced FSM Event which is
227           asynchronous event.   Affected files are in lib/.
228
229         * Added epoll(7) support to SILC Scheduler.  It is used by default
230           if it is available.  Affected files are
231           lib/silcutil/silcschedule.[ch],
232           lib/silcutil/unix/silcunixschedule.c.
233
234 Tue Dec 19 20:39:35 EET 2006  Pekka Riikonen <priikone@silcnet.org>
235
236         * Added CTR mode to AES.  Simplified cipher implementation API
237           more.  Affected files are in lib/silccrypt/.
238
239 Sun Dec 17 16:46:55 EET 2006  Pekka Riikonen <priikone@silcnet.org>
240
241         * Removed `detach' client operation.  The detachment data is
242           now delivered in SILC_COMMAND_DETACH command reply to
243           application.  Affected file in lib/silcclient/.
244
245         * Rewrote resuming/detaching in client library.
246
247         * Added boolean encryption indicator for silc_cipher_set_key.
248           Affected files lib/silccrypt/silccipher.[ch].
249
250 Wed Dec 13 18:05:50 EET 2006  Pekka Riikonen <priikone@silcnet.org>
251
252         * Added silc_likely and silc_unlikely macros for GCC branch
253           prediction optimizations.  Affected file lib/silcutil/silctypes.h.
254
255         * Added assembler AES optimization.  Cleaned up the SILC Cipher
256           implementation API.  Affected files are in lib/silccrypt/.
257
258 Tue Dec 12 18:56:14 EET 2006  Pekka Riikonen <priikone@silcnet.org>
259
260         * Changed back the SILC_FSM_THREAD_WAIT operation to not
261           continue to next state if thread is finished already.  That
262           check is not done anymore.  Affected files are
263           lib/silcutil/silcfsm.[ch].
264
265 Sun Dec 10 13:54:52 EET 2006  Pekka Riikonen <priikone@silcnet.org>
266
267         * Removed silc_packet_[get|set]_ciphers and
268           silc_packet_[get|set]_hmacs.  Added silc_packet_set_keys that
269           handle REKEY_DONE packet sending in rekey.  Affected files
270           are lib/silccore/silcpacket.[ch].
271
272         * Added silc_fsm_is_started.  Affected files are
273           lib/silcutil/silcfsm.[ch].
274
275         * Added settings sign_channel_message, sign_private_message
276           and key_exchange_rekey_pfs to SILC Client.  Added UDP transport
277           support for key agreement in /KEY command. Affected files
278           in apps/irssi/src/silc/core/.
279
280         * During SILC Client initialization forward log messages to
281           stderr.   Affected files in apps/irssi/src/silc/core/.
282
283 Thu Dec  7 19:07:21 EET 2006  Pekka Riikonen <priikone@silcnet.org>
284
285         * Added silc_ske_get_key_material.  Affected files are
286           lib/silcske/silcske.[ch].
287
288         * Added silc_packet_stream_is_udp.  Affected files are
289           lib/silccore/silcpacket.[ch].
290
291         * Added SKE packet retransmission support with UDP transport.
292           Affected file is lib/silcske/silcske.c.
293
294 Sun Dec  3 22:00:12 EET 2006  Pekka Riikonen <priikone@silcnet.org>
295
296         * Added silc_socket_stream_is_udp.  Affected file is
297           lib/silcutil/silcsocketstream.[ch].
298
299         * Added UDP transport support to packet engine.  Affected file
300           is lib/silccore/silcpacket.c.
301
302         * Added silc_socket_stream_is_udp.  Affected file is
303           lib/silcutil/silcsocketstream.[ch].
304
305 Sat Nov 18 11:33:03 EET 2006  Pekka Riikonen <priikone@silcnet.org>
306
307         * Added silc_packet_send_va[_ext] to send variable argument
308           formatted buffers.  Affected files lib/silcore/silcpacket.[ch].
309
310         * Timeout freelist garbage collection added to scheduler.
311           Affected file lib/silcutil/silcschedule.c.
312
313 Thu Nov  9 18:12:15 EET 2006  Pekka Riikonen <priikone@silcnet.org>
314
315         * Added silc_show_public_key_file to
316           lib/silcapputil/silcapputil.[ch].
317
318         * Added SILC_STR_ADVANCE support for buffer unformatting.
319           Affected file lib/silcutil/silcbuffmt.c.
320
321 Tue Nov  7 18:04:36 EET 2006  Pekka Riikonen <priikone@silcnet.org
322
323         * Added silc_string_split to lib/silcutil/silcstrutil.[ch].
324
325         * Added silc_mutex_assert_locked to lib/silcutil/silcmutex.h.
326
327         * silc_fsm_continue[_sync] now cancels erlier timeout set with
328           silc_fsm_next_later.  Affected file lib/silcutil/silcfsm.c.
329
330 Sat Nov  4 21:50:37 EET 2006  Pekka Riikonen <priikone@silcnet.org
331
332         * Added SILC_STR_FUNC to buffer format API.  Affected files
333           are lib/silcutil/silcbuffmt.[ch].
334
335         * Added silc_buffer_[s]enlarge to lib/silcutil/silcbuffer.h.
336
337         * No more memory allocation for message payload parsing.
338           Pre-allocated buffer can be used with message payload encoding.
339           Affected files lib/silccore/silcmessage.[ch].
340
341 Fri Oct 27 21:01:26 EEST 2006  Pekka Riikonen <priikone@silcnet.org
342
343         * Added silc_buffer_sunformat and silc_buffer_sunformat_vp
344           to silcutil/silcbuffmt.[ch].
345
346 Sun Oct 22 13:03:07 EEST 2006  Pekka Riikonen <priikone@silcnet.org
347
348         * Added SILC_STR_BUFFER to format and unformat SilcBuffer.
349           Affected file lib/silcutil/silcbuffmt.[ch].
350
351         * Removed silc_schedule_signal_[un]register and
352           silc_schedule_signal_call.  Added silc_schedule_task_add_signal
353           to add signal task.  Only one callback per signal may be
354           added.  The signals are now automatically called back to
355           caller.  Affected files lib/silcutil/silcschedule.[ch] and
356           silcutil/[unix/win32]/silc[unix/win32]schedule.c.
357
358         * Added silc_time_msec and silc_time_usec to silcutil/silctime.[ch].
359
360         * Added SilcSKEParams for SKE parameters and simplied even more
361           the SKE interface.  Affected files are lib/silcske/silcske.[ch].
362           Added support for IV included and session port handling with
363           UDP/IP connections.
364
365         * Added Secure ID (SID) support with IV Included flag (for UDP/IP)
366           in lib/silccore/silcpacket.[ch].  Added silc_packet_set_sid
367           which is called after every rekey when IV Included flag is used.
368           See SILC specifications for details.
369
370 Thu Oct 19 10:03:03 EEST 2006  Pekka Riikonen <priikone@silcnet.org
371
372         * Added lib/silcapputil and moved SILC application specific
373           utility routines from the generic util library lib/silcutil
374           to the new library.  Removed lib/silcidcache and moved that
375           to lib/silcapputil as well.
376
377 Tue Sep 19 00:14:11 EEST 2006  Pekka Riikonen <priikone@silcnet.org>
378
379         * Added SILC_STR_ADVANCE.  Affected file is
380           lib/silcutil/silcbuffmt.[ch].
381
382         * The silc_buffer_strformat preserves buffer locations now.
383
384         * Added lib/silcutil/silcatomic.h for atomic operations.
385
386 Sat Sep 16 11:23:06 EEST 2006  Pekka Riikonen <priikone@silcnet.org>
387
388         * Added lib/silchttp, SILC HTTP server, a very simple HTTP
389           server.
390
391         * Fixed MIME deocing when data portion is not present.
392           Affected file lib/silcutil/silcmime.c.
393
394 Wed Jul 19 12:06:38 EEST 2006  Pekka Riikonen <priikone@silcnet.org>
395
396         * Moved lib/silccore/silcidcache.[ch] to lib/silcutil/.
397
398         * Added IV Included support to packet routines, to allow
399           packet sending and receiving on UDP/IP.  Affected files are
400           lib/silccore/silcpacket.[ch].
401
402         * Added SILC_FSM_YIELD.  Affected files lib/silcutil/silcfsm.[ch].
403
404 Tue Jul 18 20:10:28 EEST 2006  Pekka Riikonen <priikone@silcnet.org>
405
406         * Added UDP support to network and socket stream library.
407
408 Sat Jun 24 22:33:18 EEST 2006  Pekka Riikonen <priikone@silcnet.org>
409
410         * Added conditional variables.  New files are
411           lib/silcutil/silcondvar.h and platform specific implementations.
412
413 Thu Jan  5 20:02:31 CET 2006 Patrik Weiskircher <pat@icore.at>
414
415         * make sure session->hostname and session->port are valid before the
416           application callback is done, since things will go wrong if the
417           application immediately calls silc_client_file_receive. Affected
418           file lib/silcclient/client_ftp.c.
419           Patch received from Stefan Siegel <stesie@brokenpipe.de>, thanks!
420
421 Fri Dec 30 22:54:21 EET 2005  Pekka Riikonen <priikone@silcnet.org>
422
423         * New SILC PKCS API enabling support for other public keys
424           and certificates, lib/silccrypt/silcpkcs.[ch], silcpk.[ch].
425
426         * Separated SILC Public Key Payload routines from the PKCS API
427           to lib/silccore/silcpubkey.[ch].
428
429 Wed Dec 28 13:55:22 EET 2005  Pekka Riikonen <priikone@silcnet.org>
430
431         * Added SILC Key Repository library, lib/silcskr.
432
433         * Added SILC Server library, lib/silcserver.
434
435 Mon Dec 19 18:04:24 EET 2005  Pekka Riikonen <priikone@silcnet.org>
436
437         * MIME objects in attributes now use SilcMime.  Affected files
438           are lib/silccore/silcattrs.[ch].
439
440 Sat Dec 17 20:13:31 EET 2005  Pekka Riikonen <priikone@silcnet.org>
441
442         * Synchronize semaphore posting for real threads in FSM.
443           Affected files are lib/silcutil/silcfsm.c, silcfsm_i.h.
444
445 Mon Nov 28 17:06:54 EET 2005  Pekka Riikonen <priikone@silcnet.org>
446
447         * Added silc_file_set_nonblock.  Affected file is
448           lib/silcutil/silcfileutil.h.
449
450         * Added silc_fd_stream_file to lib/silcutil/silcfdstream.[ch].
451
452 Sat Nov 26 16:13:40 EET 2005  Pekka Riikonen <priikone@silcnet.org>
453
454         * FSM based implementation of SILC SKE.  Simpler interface also.
455           Affected files are in lib/silcske/.
456
457         * Added SilcBool type.  Affected file lib/silcutil/silctypes.h.
458
459 Sat Nov 19 17:34:51 EET 2005  Pekka Riikonen <priikone@silcnet.org>
460
461         * Added SilcMime API to lib/silcutil/silcmime.[ch].  The old
462           silc_mime_parse is available but deprecated.
463
464         * Check that packet is valid when processing key exchange,
465           authentication and rekey protocols.  Fixes a crashbug.
466           Affected files are apps/silcd/protocol.c and
467           lib/silcclient/protocol.c.
468
469         * Added SILC_HASH_MAXLEN to lib/silccrypt/silchash.h, and changed
470           all hash buffers to use that instead of fixed values.
471
472 Wed Nov 16 15:47:12 EET 2005  Pekka Riikonen <priikone@silcnet.org>
473
474         * Added SHA-256 to crypto library.  The SHA-256 takes now
475           precedence over SHA-1.
476
477 Thu May 26 20:31:06 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
478
479         * Check for valid return value from regcomp.  Affected file
480           lib/silcutil/unix/silcunixutil.c.
481
482 Tue May 10 23:11:17 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
483
484         * Fixed silc_hash_uint to work with integers.  Affected
485           file lib/silcutil/silcutil.c.
486
487 Tue May 10 15:11:53 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
488
489         * Rewritten SILC Log API.  Affected files lib/silcutil/silclog.[ch].
490
491 Mon May  9 12:00:08 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
492
493         * Fixed channel public key list saving on JOIN command reply
494           on backup router.  Affected file apps/silcd/command_reply.c.
495
496 Mon May  2 10:42:49 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
497
498         * Added default limit how many channels client can join,
499           default is 50.  Added 'channel_join_limit' configuration
500           option to server too.  Affected files are apps/silcd/command.c
501           and serverconfig.[ch].
502
503 Sun May  1 17:42:55 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
504
505         * --without-silc -> --with-silc, --without-irssi -> --with-irssi.
506           On Toolkit the server and client are not compiled by default.
507           Affected file configure.ad.
508
509 Thu Apr 28 15:57:37 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
510
511         * Added lib/contrib/getopt.[ch] for platforms that don't
512           have it (it is not GPL implementation).
513
514         * Fixed compilation when pkg-config is used.
515
516 Wed Apr 27 11:49:41 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
517
518         * A comma in invite/ban string is invalid, check for it.
519           Affected file apps/silcd/server_util.c.
520
521         * Added SERVICE command to the server.  It parses the command
522           request but SILC Server does not support services for the
523           time being.  Affected file apps/silcd/command.[ch].
524
525         * Added SERVICE command and command reply to client library.
526           It is however incomplete.  Updated Toolkit documentation.
527           Affected files are lib/silcclient/command[_reply].[ch].
528
529         * Fixed IDENTIFY/WHOWAS command reply to send the username
530           correctly (uninitialized buffer).  Affected file is
531           apps/silcd/server_query.c.
532
533 Mon Apr 25 14:25:24 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
534
535         * Moved silcer/, silc/, silcd/ and irssi/ to apps/.  This
536           finalizes the major restructuring of the CVS tree.
537
538 Mon Apr 25 00:39:30 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
539
540         * Send empty MOTD reply if MOTD file cannot be read.
541           Affected file silcd/command.c.
542
543 Sun Apr 24 12:01:37 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
544
545         * Optimized primer number generator to use simpler conversion
546           routines.  Also assure that the prime number will have the
547           highest bit set after modifying it.  Affected file is
548           lib/silcmath/silcprimegen.c.
549
550         * Added LibTomMath to SILC Math library (SILC_DIST_TMA).
551
552         * Added FastTomMath to SILC Math Library (SILC_DIST_TFM),
553           for now only for testing purposes, it will not be delivered
554           in any distribution for now.
555
556         * Removed NSS MPI from the source tree.  Due to upcoming
557           license change for the SILC Toolkit, we cannot deliver the
558           NSS MPI anymore.  I decided to replace it in all distributions
559           with public domain library.
560
561         * Removed GNU regex from lib/contrib and introduced free
562           GNU compatible regex, lib/contrib/regexpr.[ch].  Added
563           GNU regex compatible API to it (only partial).
564
565         * Removed getopt routines from lib/contrib.
566
567 Fri Apr 22 12:21:44 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
568
569         * Use silc_server_send_command_reply to send replies instead
570           of encoding packet itself.  Affected file silcd/command.c.
571
572         * Added command sending and receiving statistics to server.
573           Affected files in silcd/.
574
575         * GCC 4 warning fixes.  -Wno-pointer-sign option is now used
576           with GCC, for it not to warn about pointer signedness.
577
578 Tue Apr 19 11:57:35 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
579
580         * Added context to the SilcIDCache destructor.  Affected
581           files are lib/silccore/silcidcache.[ch],
582           lib/silcclient/client.c and silcd/server.c.
583
584 Mon Apr 18 09:53:28 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
585
586         * Added pkg-config check to configure.
587
588         * The PublicKeyDir must not be used with Admin block in server
589           config.  Affected file silcd/serverconfig.c.
590
591 Sat Apr 16 20:23:48 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
592
593         * Added Autodist.
594
595 Thu Apr 14 20:25:08 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
596
597         * Handle empty LIST command reply correcttly in server.  Affected
598           file silcd/command_reply.c.
599
600         * Handle empty LIST command reply correctly in client library.
601           The application will now receive one LIST command reply with
602           all arguments set to NULL if there are no channels.  Updated
603           Client Library documentation accordingly.  Affected file
604           lib/silcclient/command_reply.c.
605
606 Tue Apr 12 00:02:09 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
607
608         * Added channel name string stringprep profile to the protocol
609           and implementation to allow a little free'er channel name
610           strings.  Affected files are lib/silcutil/silcstringprep.[ch].
611
612         * Added silc_channel_name_[check|verify] to check and verify
613           channel name strings.  Affected files are
614           lib/silcutil/silcstrutil.[ch].
615
616         * Added support for the new channel name preparation in client
617           library and server.  Affected files in lib/silcclient and
618           silcd/.
619
620 Mon Apr 11 13:40:27 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
621
622         * Added the Autodist into the source tree.  It replaces the
623           old ./prepare.  It can be used to create distributions as
624           previously.  See README.CVS and README.DIST.  See
625           distributions in distdir/.
626
627 Sun Apr 10 11:30:56 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
628
629         * Make sure query sends at least an error back if nothing
630           more is sent.  Affected file silcd/server_query.c.
631
632 Thu Apr  7 14:50:01 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
633
634         * During query, check if the original command caller goes
635           away.  If it does, stop the query.  Affected file
636           silcd/server_query.c.
637
638         * Check for valid channel creation in JOIN command reply.
639           Affected file lib/silcclient/command_reply.c.
640
641         * Handle the resolver counter in silc_client_get_users_by_channel
642           callback correctly.  Fixed auto-join bug in Gaim.  Affected
643           file lib/silcclient/idlist.c.
644
645 Wed Apr  6 16:56:53 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
646
647         * Added some better error messages.  Affected file
648           silcd/command_reply.c and packet_receive.c.
649
650         * Handle error in WATCH command propely on backup router.
651           Affected file silcd/command.c.
652
653         * Fixed freeing of unfreeable variable in WHOIS command reply.
654           Affected file silcd/command_reply.c.
655
656 Wed Apr  6 09:10:31 CEST 2005  Pekka Riikonen <priikone@silcnet.org>
657
658         * Added pkg-config .pc file creation for silc core library
659           and silcclient library.  A patch by c0ffee.
660
661         * Removed the need for GNU Libidn.  Added the simple stringprep
662           from libidn into lib/contrib/.  It is now used also on Windows
663           build.
664
665 Mon Apr  4 15:15:46 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
666
667         * Simplified the invite and ban string handling in the
668           server.  Check for valid invite and ban arguments also.
669           Affected file silcd/server_util.c.
670
671 Sun Apr  3 14:58:53 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
672
673         * Added WATCH list announcing in backup router protocol.
674           Affected files are silcd/command.c, server.c, server_backup.c.
675
676         * Do not change users mode to founder on normal server/backup
677           if the founder mode is set, and user is first one to join.
678           Affected file silcd/pcaket_receive.c.
679
680         * Do not send CUMODE_CHANGE notify back to sender.  Affected
681           file silcd/packet_receive.c.
682
683         * Added getrusage() to take noise in SILC RNG.  A patch by
684           Mika Boström.  Affected files are configure.in.pre,
685           includes/silcincludes.h.in, lib/silccrypt/silcrng.c.
686
687 Sat Apr  2 18:09:30 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
688
689         * Splitted the SILC libraries configuration into a configure
690           fragment into lib/configure.ad.  It is now possible, once
691           this feature is added, to specify whether to compile or not
692           compile included SILC libraries.  Affected files are
693           configure.in.pre, lib/silcmath/mpi/configure.ad,
694           lib/configure.ad, Makefile.defines.pre and
695           Makefile.defines_int.pre.
696
697         * Added --with-silc-includes and --with-silc-libs to configure.
698           If specified the included libs are not compiled, but the
699           specified libs are used.  Pkg-config is not yet supported.
700           Affected file configure.in.pre.
701
702         * Fixed WATCH command handling on backup router.  Router does not
703           send the watch command any more to backup if it originates from
704           backup.  Affected file silcd/command.c.
705
706 Fri Apr  1 18:52:47 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
707
708         * Changed announcing to not announce unregistered clients.
709           Affected file silcd/server.c.
710
711         * Fixed username handling in command reply.  Affected file
712           silcd/command_reply.c.
713
714         * Log files are now 0600.  Affected file lib/silcutil/silclog.c.
715
716 Thu Mar 31 22:34:22 CEST 2005  Patrik Weiskircher <pat@icore.at>
717
718         * Added new define SILC_MACOSX, if __APPLE__ and __MACH__ is defined.
719           Affected file: includes/silcincludes.h.in
720
721         * bool is defined as _Bool on Mac OS X now.
722           Affected file: lib/silcutil/silctypes.h
723
724 Thu Mar 31 08:52:06 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
725
726         * Added support for UTF-8 nicknames, channel names and
727           server names in client library.  Affected files in
728           lib/silcclient/.
729
730         * Added __SILC_HAVE_PTHREAD, __SILC_HAVE_SIM, __SILC_HAVE_LIBIDN,
731           and __SILC_ENABLE_DEBUG to include/silcclient.h for third-party
732           software to check how Toolkit has been compiled.
733
734 Wed Mar 30 22:16:35 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
735
736         * Added silc_utf8_str[n]casecmp into lib/silcutil/silcutf8.[ch].
737
738         * Use silc_utf8_str[n]casecmp instead of strcmp routines
739           in library and in SILC Client when dealing with nicknames
740           and other identifier strings.  Affected file in client lib
741           and irssi.
742
743         * Convert nickname to UTF-8 in /msg and /smsg.  Affected file
744           irssi/src/silc/core/silc-servers.c.
745
746 Wed Mar 30 10:50:02 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
747
748         * Fixed idcache to work with the new identifier strings.
749           Affected file lib/silccore/silcidcache.c.
750
751         * Added UTF-8 hash and compare function for SilcHashTable.
752           Affected file lib/silcutil/silcutil.[ch].
753
754         * Added casefolding stringprep, SILC_CASEFOLD_PREP.
755           Affected file lib/silcutil/silcstringprep.[ch].
756
757         * Changed the identifier string handling to include the original
758           format in client, server, channel entries and normalized
759           format in cache.  Affected files in silcd/.
760
761 Tue Mar 29 16:51:35 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
762
763         * Added support for the new identifier strings and their
764           validity checking.  Nicknames, channel names and usernames
765           can now include practically any kind of letters and various
766           other characters.  Affected files in silcd/ and in libraries.
767
768           NOTE: comparing these strings should now be done with memcmp()
769           to check binary compatibility.  All these strings are normalized
770           and casing is irrelevant.
771
772         * Added silc_identifier_check to lib/silcutil/silcstrutil.[ch]
773           as easy function for applications to check whether identifier
774           strings are valid.
775
776 Tue Mar 29 00:45:11 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
777
778         * Fixed SILC_STRING_LDAP_DN encoding and decoding.  Affected
779           file lib/silcutil/silcutf8.c.
780
781         * Added SILC_STRING_UTF8_ESCAPE to lib/silcutil/silcstrutil.h.
782
783 Mon Mar 28 22:46:23 CEST 2005  Jochen Eisinger <jochen@penguin-breeder.org>
784
785         * Make public key in getkey reply mandatory.  Affected file
786           lib/silcclient/command_reply.c
787
788 Sun Mar 27 19:03:31 CEST 2005  Patrik Weiskircher <pat@icore.at>
789
790         * Added Parameter dont_register_crypto_library to
791           SilcClientParam. If set to TRUE, silcclient library will
792           not initalize the Crypto Libraries and application
793           will need to do it. Affected file lib/silcclient/silcclient.h,
794           lib/silcclient/client.c.
795
796 Sun Mar 27 19:02:48 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
797
798         * Imported new silc_utf8_[encode|decode] routines from
799           my internal SILC 1.1 source tree.  New encodings added:
800           SILC_STRING_LOCALE (SILC_STRING_LANGUAGE is deprecated),
801           SILC_STRING_UTF8, SILC_STRING_PRINTABLE, SILC_STRING_VISIBLE,
802           SILC_STRING_TELETEX, SILC_STRING_NUMERICAL and
803           SILC_STRING_LDAP_DN.
804
805         * Splitted UTF-8 routines into lib/silcutil/silcutf8.[ch].
806
807         * Implemented stringprep (RFC 3454) API.  Internally we use
808           GNU Libidn's stringprep, for now, so it is required now to
809           compile SILC sources.  Added lib/silcutil/silcstringprep.[ch].
810
811         * Added checking for GNU Libidn and --with-libidn to configure.
812
813 Wed Mar 23 11:20:33 CET 2005  Jochen Eisinger <jochen@penguin-breeder.org>
814
815         * If the passphrases entered do not match while generating a new key,
816           completly start over instead of going into an infinite loop asking
817           the user to re-enter the passphrase correctly.  Affected file
818           lib/silcutil/silcapputil.c
819
820 Sun Jan  9 14:28:51 CET 2005  Pekka Riikonen <priikone@silcnet.org>
821
822         * Make sure server is removed from backup list when it is
823           deleted.  Affected files silcd/command.c, server.c,
824           server_util.c.
825
826         * Close socket when connecting to router fails.  Affected
827           file silcd/server.c.
828
829 Tue Jan  4 13:06:26 CET 2005  Jochen Eisinger <jochen@penguin-breeder.org>
830
831         * Adopt configuration toolchain to current auto-tools.
832           Affected files prepare, irssi/configure.in
833         * Revert most of the UTF-8 fixes to SILC Client 1.0.1.  Will
834           redo that.  Affected files irssi/src/silc/core/client_ops.c,
835           irssi/src/fe-common/silc/fe-silc-channels.c
836         * Take over command line options into silcclient data structure.
837           Affected file irssi/src/silc/core/silc-core.c
838
839 Wed Dec  8 16:15:11 CET 2004  Pekka Riikonen <priikone@silcnet.org>
840
841         * Do not try to initiate backup resuming protocol forever.
842           Affected file silcd/server_backup.c.
843
844 Wed Nov 24 18:24:05 CET 2004  Pekka Riikonen <priikone@silcnet.org>
845
846         * ID change in resuming has to be done before changing
847           detached client's modes, since the ID change may fail and
848           leave ghosts on the network.  Affected file is
849           silcd/packet_receive.c.
850
851 Tue Nov 23 16:54:35 CET 2004  Pekka Riikonen <priikone@silcnet.org>
852
853         * Fixed Win32 scheduler to not stuck anymore.  A patch from
854           Juha Räsänen.  Affected file is
855           lib/silcutil/win32/silcwin32schedule.c.
856
857         * Fixed QoS parsing for connection blocks in server.  Affected
858           file is silcd/serverconfig.c.
859
860         * Fixed server statistics increasing in server.  Affected file
861           is silcd/server.c.
862
863         * The CLOSE command now marks backup router as self disconnected
864           to avoid resuming problems.  Affected file silcd/command.c.
865
866 Wed Sep 22 19:46:32 CEST 2004  Patrik Weiskircher <pat@icore.at>
867
868         * When using silc_net_create_connection[_async], and your system can
869           create IPv6 sockets, it will try to connect to the IPv6 host.
870           Now it tries to connect to an IPv4 host if IPv6 fails. Affected
871           file lib/silcutil/unix/silcunixnet.c
872
873 Fri Jun 18 19:26:58 CEST 2004  Pekka Riikonen <priikone@silcnet.org>
874
875         * Check for valid route when receiving packet from router and
876           when routing it to local server in the cell.  A patch from
877           Matt Miller.  Affected files silcd/router.c and server.c.
878
879 Sat May  1 13:55:54 CEST 2004  Patrik Weiskircher <pat@icore.at>
880
881         * Couldn't detach and reattach twice, because of the previous
882           commit. Affected file silcd/packet_receive.c
883
884 Fri Apr 30 19:40:28 CEST 2004  Patrik Weiskircher <pat@icore.at>
885
886         * Added check to ignore Port value if Initiator is FALSE.
887           Remote router coudln't connect if Port was set. Affected file
888           silcd/serverconfig.c
889
890         * If some client tries to resume more than once at the same time,
891           server crashed. Router didn't crash, but showed odd behaviour
892           (didn't allow clients to join anymore, ..). Affected files
893           silcd/packet_receive.c silcd/idlist.h
894
895 Mon Mar 15 21:10:08 EET 2004  Pekka Riikonen <priikone@silcnet.org>
896
897         * Destroy the file transfer session in silc_client_file_close
898           with timeout.  Affected file lib/silcclient/client_ftp.c.
899
900         * Call SFTP server monitor in READ and WRITE after the actual
901           operations.  Affected file lib/silcsftp/sftp_server.c.
902
903 Wed Mar 10 21:30:02 EET 2004  Pekka Riikonen <priikone@silcnet.org>
904
905         * Create one configure script from configure fragments
906           (configure.ad).  This is a first step towards new distribution
907           system.  Affected files prepare, configure.in.pre,
908           lib/silcmath/mpi/configure.ad.
909
910 Wed Mar 10 18:35:24 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
911
912         * Removed expiring of client key pair.  Affected file is
913           irssi/src/silc/core/clientutil.c
914
915 Tue Mar  9 17:11:58 EET 2004  Pekka Riikonen <priikone@silcnet.org>
916
917         * Check the number of connections from real number of
918           connections instead of socket number, when deciding if
919           server is full.  Affected files are silcd/server.c,
920           server_internal.h and silcd.c.
921
922         * Clarified the connections_max meaning in General section
923           in doc/example_silcd.conf.in.
924
925         * The reconnect_keep_trying default value set to TRUE
926           if it is not defined in the config file.  Affected file
927           silcd/serverconfig.c.
928
929 Wed Mar  3 15:13:49 CET 2004  Pekka Riikonen <priikone@silcnet.org>
930
931         * Fixed crashbug in connection closing, after a protocol
932           completion callback, which might have closed it already.
933           Affected file silcd/server.c.
934
935         * Fixed rekey with PFS in backup router.  It did not allow
936           rekeys with PFS, and when the rekey protocol timedout
937           it crashed the backup router without the above fix.  Affected
938           file silcd/packet_send.c and server.c.
939
940 Sat Feb 28 16:25:09 EET 2004  Pekka Riikonen <priikone@silcnet.org>
941
942         * The silc_client_add_channel_private_key now returns the
943           private key context if pointer is given as argument.
944           Affected files are lib/silcclient/silcclient.h and
945           client_channel.c.
946
947         * Added support for using channel private keys in SILC
948           Client Library even if the private key mode is not set
949           on the channel.  Affected file lib/silcclient/client_channel.c.
950
951         * The channel private key used to decrypt message is now
952           delivered to the application in the 'channel_messageÃ' client
953           operation.  Affected files are lib/silcclient/silcclient.h
954           and client_channel.c.
955
956         * Fixed wrong arg type for user limit in CMODE command reply.
957           Affected file silcd/command.c.
958
959         * The user limit is now taken and saved to SilcClientEntry in
960           JOIN and CMODE command replies and in CMODE_CHANGE notify.
961           Affected files lib/silcclient/silcclient.h, command_reply.c
962           and client_notify.c.
963
964         * Added support to the new private message key indicator
965           packet.  Added a new function to the client library:
966           silc_client_send_private_message_key_request.  The sender
967           indicates to be initiator, and receiver is responder.
968           Added the indicator to the SilcClientEntry as 'prv_resp'
969           boolean.  Affected files are lib/silcclient/silcclient.h
970           client.[ch], and client_prvmsg.c.
971
972 Fri Feb 27 11:25:26 CET 2004  Pekka Riikonen <priikone@silcnet.org>
973
974         * Fixed the JOIN command calling when called with both
975          -auth and -founder.  Affected file is lib/silcclien/command.c.
976
977 Wed Feb 25 23:12:11 EET 2004  Pekka Riikonen <priikone@silcnet.org>
978
979         * Check watcher list for resumed clients as well.  Affected
980           file is silcd/packet_receive.c.
981
982 Tue Feb 24 16:49:10 EET 2004  Pekka Riikonen <priikone@silcnet.org>
983
984         * Implemented the user limit to the CMODE_CHANGE notify,
985           CMODE command reply and JOIN command reply in server.
986           Affected files are silcd/server.c, command.c, command_reply.c,
987           packet_send.c and packet_receive.c.
988
989 Mon Feb 23 23:31:15 EET 2004  Pekka Riikonen <priikone@silcnet.org>
990
991         * Defined SILC_STRFMT_END that must be used now with
992           silc_buffer_strformat, instead of SILC_STR_END.  Fixes
993           crashes on AMD64.  Affected files are lib/silcutil/silcbuffmt.h,
994           lib/silcclient/silcvcard.c, silcd/server_util.c.
995
996         * Fixed the adding of public key to the WATCH list in server.
997           Fixed the WATCH notify sending to client.  Affected files
998           are silcd/packet_send.[ch], command.c, server_util.c.
999
1000         * Implemented the watching by public key in the SILC Client
1001           Library and SILC Client.  Affected files are
1002           lib/silcclient/command.c and client_notify.c.
1003
1004 Mon Feb 23 09:30:30 CET 2004  Pekka Riikonen <priikone@silcnet.org>
1005
1006         * Added support for public key watching in server.  Affected
1007           files are silcd/server.c, server_internal.h, command.c,
1008           server_util.c.
1009
1010 Sun Feb 22 19:03:59 EET 2004  Pekka Riikonen <priikone@silcnet.org>
1011
1012         * Added public key to the SIlcClientEntry.  Affected files
1013           are lib/silcclient/silcclient.h, command_reply.c, idlist.c
1014
1015         * Fixed the get_clients_whois reply processing to return
1016           exactly same entries server returned.  Makes it possible
1017           to search using attributes.  Affected file is
1018           lib/silcclient/idlist.c.
1019
1020 Sat Feb 21 19:21:57 EET 2004  Pekka Riikonen <priikone@silcnet.org>
1021
1022         * Save founder key to SilcChannelEntry.  Affected files are
1023           lib/silcclient/silcclient.h, command_reply.c, idlist.c.
1024
1025 Fri Feb 20 20:37:38 EET 2004  Pekka Riikonen <priikone@silcnet.org>
1026
1027         * Call the monitor callback with _CLOSED status from the
1028           silc_client_file_close.  Affected files are
1029           lib/silcclient/client_fpt.c, silcclient.h
1030
1031         * Added silc_client_get_clients_whois which resolves using
1032           WHOIS, and supports requested attributes as well.
1033           Affected files are lib/silcclient/silcclient.h, idlist.c.
1034
1035 Fri Feb 19 21:09:22 EET 2004  Pekka Riikonen <priikone@silcnet.org>
1036
1037         * Added support for asking the destination filename where
1038           the downloaded file is saved in the file transfer.  Affected
1039           files are lib/silccilent/silcclient.h, client_ftp.c.
1040
1041 Wed Feb 18 02:46:17 EET 2004  Pekka Riikonen <priikone@silcnet.org>
1042
1043         * Fixed error handling in resuming data processing.  Affected
1044           files are lib/silcclient/client_resume.c and client.c.
1045
1046 Tue Feb 17 19:34:30 EET 2004  Pekka Riikonen <priikone@silcnet.org>
1047
1048         * Fixed silc_client_send_private_message to return TRUE correctly.
1049           Affected file lib/silcclient/client_prvmsg.c.
1050
1051         * Added topic to the SilcChannelEntry.  Affected files are
1052           lib/silcclient/silcclient.h, command_reply.c, client_notify.c.
1053
1054 Fri Feb 13 14:19:14 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
1055
1056         * Use conn->cmd_ident for all silc_client_command_call()s.  Affected
1057           file lib/silcclient/command.c
1058
1059 Fri Feb 13 13:53:45 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
1060
1061         * Convert all commands to UTF-8 before passing them to the
1062           client library.  Still need to convert replies from UTF-8 to
1063           the locale encoding.  Affected file
1064           irssi/src/silc/core/silc-cmdqueue.c
1065
1066 Fri Feb 13 13:13:07 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
1067
1068         * redirect all silc_client_command_calls through a queueing framework.
1069           This fixes /CYCLE and the annoying "nick change after auto-joining
1070           a channel".  Furthermore it defines one central point where
1071           command parameters can be UTF-8-ified.  Affected files
1072           irssi/src/silc/core/Makefile, client_ops.c, silc-channels.c,
1073           silc-servers.[ch], silc-core.c, silc-cmdqueue.[ch], silc-lag.c
1074
1075 Fri Feb 13 12:04:41 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
1076
1077         * use asynchronous connect() to establish router connections.
1078           Fixes problem when the primary router goes down.  Affected files
1079           silcd/server.c, silcd/server_backup.c
1080
1081 Thu Feb 12 20:09:59 EET 2004  Pekka Riikonen <priikone@silcnet.org>
1082
1083         * Added SILC_[32|64]_TO_PTR and SILC_PTR_TO_[32|64] macros.
1084           Fixed various compilation warnings when type casting ints
1085           to pointers or vice versa, of different size.  Updates around
1086           the source free.
1087
1088 Tue Feb  3 23:25:17 EET 2004  Pekka Riikonen <priikone@silcnet.org>
1089
1090         * Surrogates not allowed in UTF-8 strings, updated decoder.
1091           Affected file lib/silcutil/silcstrutil.c.  Added UTF-8
1092           testers in lib/silcutil/tests/ directory.
1093
1094 Wed Jan 14 18:42:44 EET 2004  Pekka Riikonen <priikone@silcnet.org>
1095
1096         * Added SILC_CLIENT_CONN_ERROR_KE, ERROR_AUTH, ERROR_RESUME and
1097           ERROR_TIMEOUT SilcClientConnectionStatus errors.  Affected
1098           files are lib/silcclient/silcclient.h, client.c.
1099
1100 Mon Jan 12 13:01:10 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
1101
1102         * When resuming a session fails, notify the user that the session
1103           file needs to be removed eventually.  Affected files
1104           irssi/src/fe-common/silc/module-formats.[ch],
1105           irssi/src/silc/core/client_ops.c.
1106
1107 Tue Jan 04 12:16:04 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
1108
1109         * Added DIST_SUBDIRS symbols to include all subdirs in distributions.
1110           Affected files lib/silcutil/Makefile.am, lib/silcmath/Makefile.am
1111
1112         * Typofix in Irssi::Silc module.  Affected file
1113           irssi/src/perl/silc/Silc.xs.
1114
1115 Tue Jan 04 02:43:44 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
1116
1117         * Changed the way NOTICE flagged messages are treated. Added support
1118           for notices in queries and signing notices.  Affected files
1119           irssi/default.theme; irssi/docs/help/in/notice.in;
1120           irssi/src/fe-common/silc/module-formats.[ch], fe-silc-messages.c;
1121           irssi/src/silc/core/client_ops.c, silc-channels.c, silc-servers.c
1122
1123         * Fixed typo in /ACTION help.  Affected file
1124           irssi/docs/help/in/action.in
1125
1126 Mon Jan 03 23:26:38 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
1127
1128         * Fixed typo in perl module.  Affected file
1129           irssi/src/perl/silc/Server.xs
1130
1131         * Changed the way ACTION flagged messages are treated. Added support
1132           for actions in queries and signing actions.  Affected files
1133           irssi/default.theme; irssi/docs/help/in/action.in;
1134           irssi/src/fe-common/silc/module-formats.[ch], fe-silc-messages.c,
1135           fe-silc-queries.c; irssi/src/silc/core/client_ops.c, silc-channels.c,
1136           silc-servers.[ch]
1137
1138 Mon Jan 03 16:04:29 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
1139
1140         * Incorrectly reported error when client had to be resolved from
1141           server in /SMSG.  Affected file irssi/src/silc/core/silc-servers.c
1142
1143 Sat Jan  3 16:37:15 EET 2004  Pekka Riikonen <priikone@silcnet.org>
1144
1145         * Fixed whois public key hash table deleting and adding in
1146           detached client case.  Affected file silcd/packet_receive.c.
1147
1148 Sat Jan 03 12:15:38 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
1149
1150         * Changed filenames of silc/fe module not to collide with filenames
1151           from core/fe.  Also seperated public messages printing from
1152           query messages printing.  Affected files are all in
1153           irssi/src/fe-common/silc.
1154
1155 Sat Jan  3 12:18:07 EET 2004  Pekka Riikonen <priikone@silcnet.org>
1156
1157         * Fixed the invite process handling during joining to use
1158           correct server name for the client that is matched against
1159           the invite string for the channel.  Wrong server name caused
1160           inability to join the channel.  Affected file is
1161           silcd/command.c.
1162
1163 Fri Jan  2 23:34:17 EET 2004  Pekka Riikonen <priikone@silcnet.org>
1164
1165         * Fixed the CUMODE channel founder authentication on normal
1166           server to not remove the founder rights on existing founder
1167           before checking that router accepts the mode change.  Affected
1168           files are silcd/command.c and silcd/packet_receive.c.
1169
1170         * Remove the server entry correctly when rekey timeouts and
1171           remote router connection on normal server is closed.  Fixes
1172           a crash where server uses the freed server entry.  Affected
1173           file silcd/server.c.
1174
1175 Fri Jan 02 10:28:15 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
1176
1177         * Add /SILCNET [ADD|REMOVE|LIST] command to manage different SILC
1178           networks.  This is the first step in solving the bug about
1179           /SERVER ADD -silcnet <silcnet>.  Affected files
1180           irssi/docs/in/silcnet.in; irssi/src/fe-common/silc/Makefile.am,
1181           fe-silcnet.c, fe-common-silc.c, module-formats.[ch];
1182           irssi/src/silc/core/silc-chatnets.[ch], silc-core.c, Makefile.am
1183
1184 Thu Jan 01 20:11:32 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
1185
1186         * /SMSG and /MMSG now correctly create new queries. Affected files
1187           irssi/src/fe-common/silc/fe-messages.c, irssi/scripts/silc-mime.pl
1188
1189         * Add basic support for SILC protocol specific variables in perl.
1190           Affected files irssi/src/perl/silc/*, irssi/configure.in,
1191           irssi/src/perl/Makefile.am
1192
1193 Wed Dec 31 17:06:55 CET 2003  Jochen Eisinger <jochen@penguin-breeder.org>
1194
1195         * Don't use silc_get_input, it's obviously not reliable.  Fixes
1196           issue when the current key expires.  Affect file
1197           irssi/src/silc/core/clientutils.c
1198
1199         * Make the session data filename configurable.  This makes it
1200           possible to have different session files for different
1201           SILC networks.  Affected files irssi/src/silc/core/silc-core.c,
1202           client_ops.[ch], silc-servers.c,
1203           irssi/src/silc/fe-common/silc/module-formats.[ch]
1204
1205         * Use the same set of libtool files for the MPI lib as for the
1206           rest of the toolkit.  Affected files lib/silcmath/mpi/config.guess,
1207           config.sub, configure.in, install-sh, missing, mkinstalldirs
1208
1209 Sun Dec 28 21:57:39 EET 2003  Pekka Riikonen <priikone@silcnet.org>
1210
1211         * Fixed server statistics decrementing error to not go to
1212           negative.  Affected file silcd/packet_receive.c.
1213
1214 Sat Dec 20 14:42:36 EET 2003  Pekka Riikonen <priikone@silcnet.org>
1215
1216         * Use silc_server_query_add_error to add error in public key
1217           search error.  Added support in send_reply to send errors
1218           without specific argument.  Affected file silcd/server_query.c.
1219
1220         * Fixed the WHOIS, IDENTIFY and WHOWAS error handling in SILC
1221           Client for NO_SUCH_NICK.  It was against the protocol specs.
1222           Affected file irssi/src/silc/core/client_ops.c.
1223
1224         * Added backwards support for the wrong NO_SUCH_NICK error sending
1225           in server.  To be removed in SILC Server 1.0.  Both old clients
1226           and clients with fixed error handling now works.  Affected file
1227           silcd/server_query.c.
1228
1229 Sat Dec 20 00:44:47 CET 2003  Patrik Weiskircher <pat@icore.at>
1230
1231         * fixed a bug in the whois using attributes function where no
1232           error was sent if no nickname and client id but the attributes were
1233           given to whois. Affected file silcd/server_query.c
1234
1235 Tue Dec 16 21:34:59 CET 2003  Patrik Weiskircher <pat@icore.at>
1236
1237         * remove public key from public key hashtable on detach. Affected
1238           file silcd/packet_receive.c
1239
1240         * free public key hashtable before removing clients on server
1241           shutdown. Affected file silcd/server.c
1242
1243         * remove public key prior deleting client-data on killing a client.
1244           Affected file silcd/server_util.c
1245
1246 Sat Dec 06 21:35:14 CET 2003  Patrik Weiskircher <pat@icore.at>
1247
1248         * Getting the MOTD from other servers works now. Affected
1249           files are silcd/command.c and silcd/command_reply.c
1250
1251 Thu Dec 04 11:33:46 CET 2003  Jochen Eisinger <jochen@penguin-breeder.org>
1252
1253         * Initialize the variable idletag, since it is tested in
1254           silc_core_deinit for its default value.  Affected file
1255           irssi/src/silc/core/silc-core.c
1256
1257 Sun Nov 30 19:47:02 CET 2003  Patrik Weiskircher <pat@icore.at>
1258
1259         * Fixed signed channel messages across cells. Affected file
1260           silcd/packet_send.c
1261
1262 Fri Nov 28 19:13:21 EET 2003  Pekka Riikonen <priikone@silcnet.org>
1263
1264         * Changed the SILC_LOG_* macros to not be empty if SILC_DEBUG
1265           is not defined.  They can now be safely used in if-statements
1266           without braces.  Affected file lib/silcutil/silclog.h.
1267
1268         * Added the checks for backup closing connection due to error
1269           (local or remote) and thus not allow the resuming to occur
1270           in reconnect.  Affected files are silcd/packet_send.c
1271           and server.c.
1272
1273 Tue Nov 25 15:20:59 EET 2003  Pekka Riikonen <priikone@silcnet.org>
1274
1275         * Help file updates.  Affected files in irssi/src/docs/help/in/.
1276
1277 Wed Nov 23 20:51:21 CET 2003  Patrik Weiskircher <pat@icore.at>
1278
1279         * Fixed channel messages across cells. Affected file
1280           silcd/packet_send.c
1281
1282 Wed Nov 12 11:34:56 EET 2003  Pekka Riikonen <priikone@silcnet.org>
1283
1284         * Fixed file transmission accepting in client library to not
1285           start the negotiation if user hasn't accepted the transfer,
1286           instead create new session for resent transfer.  Affected
1287           file lib/silcclient/client_ftp.c.
1288
1289         * Show the session ID in the file transmision list.  Remove
1290           session from list that failed to transfer.  Switch the current
1291           session automatically after transmission, and in errors, to new
1292           session if other sessions exists in the transfer list.  Affected
1293           files are irssi/src/silc/core/silc-servers.c,
1294           irssi/src/fe-common/silc/modfule-formats.c.
1295
1296 Mon Nov 10 14:41:40 CET 2003  Jochen Eisinger <jochen@penguin-breeder.org>
1297
1298         * Fixed MIME header parsing for the hopefully last time.  Affected
1299           file lib/silcutil/silcstrutil.c
1300
1301 Mon Nov 10 13:03:46 EET 2003  Pekka Riikonen <priikone@silcnet.org>
1302
1303         * Rewrote the PKCS#1 routines.  Added lib/silccrypt/silcpkcs1.[ch].
1304
1305         * The SILC RNG is now gauranteed to return non-zero random
1306           values.  Affected files are lib/silccrypt/silcrng.[ch].
1307
1308 Sun Nov  9 20:44:56 EET 2003  Pekka Riikonen <priikone@silcnet.org>
1309
1310         * Fixed nickname formatting when changing only case of the
1311           nickname.  Affected file lib/silcclient/idlist.c.
1312
1313 Sun Nov  9 19:33:59 CET 2003  Jochen Eisinger <jochen@penguin-breeder.org>
1314
1315         * Fixed a memory leak and incorrect printing of the "appears as"
1316           message.  Affected file irssi/src/silc/core/client_ops.c
1317
1318 Sun Nov  9 17:45:11 EET 2003  Pekka Riikonen <priikone@silcnet.org>
1319
1320         * Added CRT (Chinese Remainder Theorem) supported RSA
1321           private keys and private key operations.  This significantly
1322           increases private key operation efficiency.  No compatibility
1323           issues with new or old private keys.  Affected files are
1324           lib/silccrypt/rsa.[ch], rsa_internal.h and pkcs1.c.
1325
1326 Sat Nov  8 13:08:53 EET 2003  Pekka Riikonen <priikone@silcnet.org>
1327
1328         * Fixed GCC-3.3.2 related compilation warnings from the
1329           source tree.
1330
1331 Fri Nov  7 23:01:47 EET 2003  Pekka Riikonen <priikone@silcnet.org>
1332
1333         * Removed RC6 from distributions.
1334
1335 Fri Nov  7 19:38:42 EET 2003  Pekka Riikonen <priikone@silcnet.org>
1336
1337         * Added some better comments to lib/silccrypt/silcpkcs.h,
1338           optimized some routines in lib/silccrypt/silcpkcs.c.
1339           Added test_silcpkcs into lib/silccrypt/tests/.
1340
1341         * Fixed silc_rng_global_init to actually init the global RNG
1342           if RNG wasn't provided for it.  Affected file is
1343           lib/silccrypt/silrng.c.
1344
1345 Thu Nov  6 21:08:28 EET 2003  Pekka Riikonen <priikone@silcnet.org>
1346
1347         * Added silc_hash_table_find_by_context_ext.  Affected files
1348           lib/silcutil/silchashtable.[ch].
1349
1350         * Save the public key on normal server in WHOIS command reply
1351           from attributes, if present, and add it to public key hash
1352           table.  Fixes WHOIS resolving by public key on normal server.
1353
1354           Optimized the attributes resolving on normal server to not
1355           resolve if we resolved them already from router.
1356
1357           Affected files are silcd/server_query.c, command_reply.c.
1358
1359 Wed Nov  5 19:36:30 CET 2003 Patrik Weiskircher <pat@icore.at>
1360
1361         * Added support for whois using attributes.
1362           Affected files silcd/command_reply.c, silcd/packet_receive.c,
1363           silcd/server.c, silcd/server_internal.h, silcd/server_query.c,
1364           silcd/server_util.c
1365
1366         * Added support for whois using public key attribute to /WHOIS i
1367           client command. Affected files irssi/docs/help/in/whois.in,
1368           irssi/src/silc/core/silc-servers.c, lib/silcclient/command.c
1369
1370 Wed Nov  5 23:37:36 EET 2003 Pekka Riikonen <priikone@silcnet.org>
1371
1372         * Fixed UMODE setting in server when the client has anonymous
1373           mode set.  The mode setting was not working.  Affected file
1374           silcd/command.c.
1375
1376 Mon Nov  2 11:36:08 CET 2003 Jochen Eisinger <jochen@penguin-breeder.org>
1377
1378         * Fixed some bugs and typos related to sending split messages.
1379           Print notification when sending messages with /MMSG.  Affected
1380           files irssi/scripts/silc-mime.pl, irssi/src/silc/core/client_ops.c
1381
1382 Fri Oct 31 12:33:59 EET 2003 Pekka Riikonen <priikone@silcnet.org>
1383
1384         * Optimized the socket referencing in packet routines, client
1385           library and server.  Affected files are lib/silccore/silcpacket.c,
1386           lib/silcclient/client.c and silcd/server.c.
1387
1388         * If silc_socket_set_qos is given with NULL arguments the QoS is
1389           reset from the socket.  Affected files are
1390           lib/silcutil/silcsockconn.[ch].
1391
1392 Thu Oct 30 21:23:24 CET 2003 Jochen Eisinger <jochen@penguin-breeder.org>
1393
1394         * Add a /LISTKEYS command which lists the locally cached
1395           client and server keys.  Affected files
1396           irssi/src/fe-common/module-formats.[ch],
1397           irssi/src/silc/core/silc-{channels,servers}.c
1398           irssi/docs/help/in/listkeys.in
1399
1400 Thu Oct 30 20:23:40 EET 2003 Pekka Riikonen <priikone@silcnet.org>
1401
1402         * Check that packet queue purging was successful.  Affected
1403           files lib/silcclient/client.c and silcd/packet_send.c.  Related
1404           to MAC failed errors.
1405
1406         * Do not clear the inbuf even if it is empty if QoS was applied
1407           to it.  Otherwise the QoS data is cleared and MAC failed error
1408           will occur.  Affected file lib/silccore/silcpacket.c.
1409
1410         * Use the rekey period time as rekey protocol timeout value.
1411           If the rekey does not succeed during the rekey period there's
1412           something very wrong, and we most likely end up with wrong keys,
1413           do graceful reconnect then.   Affected file silcd/server.c.
1414
1415         * Take reference of the socket in the parser context, as it's
1416           possible to have the parsers in queue after the socket is
1417           disconnected and this may cause crash.  Affected files are
1418           lib/silccore/silcpacket.c, lib/silcclient/client.c and
1419           silcd/server.c.
1420
1421 Thu Oct 30 17:01:01 EET 2003 Pekka Riikonen <priikone@silcnet.org>
1422
1423         * Fixed KICK command reply sending, it sent to replies.
1424           Affected file silcd/command.c.
1425
1426 Wed Oct 30 14:06:52 CET 2003 Jochen Eisinger <jochen@penguin-breeder.org>
1427
1428         * Finish the silc-mime.pl script. It now supports MIME type
1429           guessing using magic files, signing data messages, executing
1430           MIME handlers in background. Affected files
1431           irssi/scripts/silc-mime.pl and irssi/docs/help/in/mmsg.in
1432
1433         * Changed MIME signal handler to make things easier for the perl
1434           script. Affected files irssi/src/silc/core/client_ops.c,
1435           silc-servers.c, and irssi/docs/signals.txt
1436
1437         * Cleaned up the silc_mime_parse function and fixed detection
1438           of wrapped header lines. Affected file lib/silcutil/silcstrutil.c
1439
1440 Sun Oct 26 21:19:02 EET 2003 Pekka Riikonen <priikone@silcnet.org>
1441
1442         * Resolve the IP for file transfer listener from the connection
1443           socket.  Affected file lib/silcclient/client_ftp.c.
1444
1445         * Accept NULL hostname parameter in the functions
1446           silc_net_check_[local|remote]_by_socket.  Do not reverse lookup
1447           if hostname is not wanted.
1448
1449 Fri Oct 24 21:24:12 CEST 2003  Jochen Eisinger <jochen@penguin-breeder.org>
1450
1451         * Fixed race condition between silc_client_init and
1452           my_silc_scheduler. Affected file irssi/src/silc/core/silc-core.c
1453
1454 Fri Oct 24 16:43:40 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
1455
1456         * Fixed file transfer connection closing when SIGNOFF for
1457           the client is received from server.  Affected file is
1458           lib/silcclient/client_ftp.c.
1459
1460 Tue Oct 21 13:35:57 CEST 2003  Pekka Riikonen <priikone@silcnet.org>
1461
1462         * Check for disconnected socket in QUIT callback.  Affected
1463           file silcd/command.c.
1464
1465 Thu Oct 21 09:43:17 CEST 2003  Jochen Eisinger <jochen@penguin-breeder.org>
1466
1467         * Modified the MIME parsing to allow \n and \r\n as delimiters.
1468           Affected files lib/silcutil/silcstrutil.c
1469
1470         * Cleaned up the escape/unescape functions for correctness and
1471           speed. Affected file irssi/src/silc/core/client_ops.c
1472
1473         * Removed handling for data messages with Content-Type: text/*,
1474           moved parsing of MIME headers to the signal handler, added
1475           support for signing and verifying data messages. Affected
1476           files are irssi/docs/signals.txt, irssi/src/silc/core/client_ops.c,
1477           irssi/src/silc/core/silc-{servers,channels}.c
1478
1479         * Added a perl script for handling data messages based on
1480           information read from Mailcap files. New file
1481           irssi/scripts/silc-mime.pl
1482
1483 Mon Oct 20 16:08:22 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
1484
1485         * Added new SILC_MESSAGE_FLAG_ACK that can  be used to
1486           acknowledge recepetion of a message to the sender.  Updated
1487           protocol specs.
1488
1489 Sat Oct 18 11:55:33 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
1490
1491         * Unregister channel key saving callback when deleting channel.
1492           Affected file lib/silcclient/idlist.c.
1493
1494         * Do not remove the client from channels in NOTIFY_TYPE_SIGNOFF
1495           before calling notify client operation.  Affected file is
1496           lib/silcclient/client_notify.c.
1497
1498         * Unregister QoS tasks when deleting the socket connection.
1499           Affected files lib/silcutil/silcsockconn.[ch],
1500           unix/silcunixsockconn.c.
1501
1502         * Implemented latest presence-attrs draft changes.  Affected
1503           files lib/silccore/silcattrs.h and
1504           irssi/src/silc/core/silc-queries.c.
1505
1506 Tue Oct 14 18:24:53 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
1507
1508         * Save old channel keys in list to allow more rapid change
1509           of channel keys if server for some reason does that.  This
1510           avoids loosing so many channel messages due to not having
1511           key to decrypt.  Affected file lib/silcclient/silcclient.h,
1512           idlist.c and client_channel.c.
1513
1514 Mon Oct 13 21:37:47 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
1515
1516         * Continued backup router tests and fixes.  Affected files
1517           silcd/server_backup, server_util.c, server.c.  See TODO.
1518
1519 Sun Oct 12 19:58:18 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
1520
1521         * Fixed SERVER_SIGNOFF handling in servers.  The client
1522           was removed from wrong list thus not removing the client
1523           at all.  Affected file silcd/packet_receive.c.
1524
1525         * Do not execute rekey protocol for disabled connections as
1526           it would never go through.  Affected file silcd/server.c.
1527
1528         * Added timeout for rekey protocol to catch if the protocol
1529           never executes successfully.  Affected files silcd/server.c
1530           and protocol.h.
1531
1532 Sat Oct 11 15:39:22 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
1533
1534         * Abandon packet processing for disconnected sockets.  Check
1535           this always after calling packet processing callback.
1536           Affected file lib/silccore/silcpacket.c.
1537
1538         * Fixed double registration disconnection code in server.
1539           Closed wrong connection.  Affected file silcd/packet_receive.c.
1540
1541 Fri Oct 10 16:27:12 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
1542
1543         * On normal server reconnect to primary during resuming 4
1544           times, then give up.  Affected file silcd/server_backup.c.
1545
1546         * If during reconnecting to routers we notice we have router
1547           connection but no primary router set, the server is in desync.
1548           Reconnect to primary to restore network.  Affected file
1549           silcd/server.c.
1550
1551         * Assure that only one protocol is exeucting at the same time.
1552           Added checks for all protocols.  Affected files are
1553           silcd/server.c and server_backup.c.
1554
1555 Thu Oct  9 20:24:09 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
1556
1557         * Check that a string is not already part on invite/ban
1558           string when processing it.  Affected file silcd/server_util.c.
1559
1560 Thu Oct  9 12:06:40 CEST 2003  Pekka Riikonen <priikone@silcnet.org>
1561
1562         * Fixed the CUMODE_CHANGE for founder mode changes to comply
1563           with 1.2 version of the protocol.  Affected file is
1564           silcd/packet_receive.c.
1565
1566 Wed Oct  8 19:41:15 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
1567
1568         * ERR_BAD_PASSWORD now returns the Channel ID of the channel
1569           where the passphrase was given.  Affected file is
1570           silcd/command.c.
1571
1572 Wed Oct  8 09:32:12 CEST 2003  Pekka Riikonen <priikone@silcnet.org>
1573
1574         * INVITE and BAN notifys are now delivered from routers to
1575           servers (but not clients) on the channel.  Updated specs and
1576           code.  Affected files silcd/packet_[send|receive].[ch],
1577           command.c, server.c and server_util.c.
1578
1579         * Implemented INVITE and BAN announcing.  Affected files are
1580           silcd/server.[ch], server_util.c.
1581
1582         * Implemented SilcStatus error type argument returning in
1583           command reply error in server.  Affected file silcd/command.c.
1584
1585         * Implemented SilcStatus argument returning in comand reply
1586           in client library.  The command_reply client operation now
1587           returns error specific arguments as well.  Affected files
1588           are lib/silcclient/command_reply.[ch], client_resume.c,
1589           lib/silccore/silcstatus.[ch].
1590
1591 Sun Oct  5 20:22:08 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
1592
1593         * Backup router protocol version 1.2 implemented.  Testing still
1594           required.  Affected files in silcd/server_backup.[ch], server.c,
1595           packet_receive.c and server_internal.h.
1596
1597 Sun Oct  5 12:36:37 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
1598
1599         * silc_client_send_[channel|private]_message now return TRUE
1600           or FALSE.  Affected file lib/silcclien/client_channel.c and
1601           client_prvmsg.c.
1602
1603 Thu Oct  2 17:03:09 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
1604
1605         * Check for explicit nickname in INVITE and BAN processing
1606           during join as well (and don't expect only wildcards in
1607           invite/ban strings).  Affected file silcd/command.c.
1608
1609         * Fixed the INVITE and BAN by public key.  The public key saved
1610           is the PK payload (as specified) not the raw data.  Affected
1611           file silcd/server_util.c.
1612
1613 Wed Oct  1 20:29:06 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
1614
1615         * UTF-8 text message support for actions and notices in SILC
1616           Client.  Affected file irssi/src/silc/core/client_ops.c.
1617
1618         * silc_get_username and silc_get_real_name now returns sensible
1619           data on Win32.  Patch by Toni Willberg.  Affected file is
1620           lib/silcutil/win32/silcwin32util.c.
1621
1622 Sun Aug 24 23:35:19 CEST 2003  Jochen Eisinger <c0ffee@penguin-breeder.org>
1623
1624         * Provide a signal handler to send MIME encoded messages and emit
1625           a signal when a MIME encoded message is received. Also document
1626           the signals for usage with the perl interface.
1627
1628           A sample perl script will be supplied at a later point.
1629
1630           Affected files are irssi/docs/signals.txt,
1631           irssi/src/silc/core/client_ops.[ch],
1632           irssi/src/silc/core/silc-{channels,servers}.c
1633
1634 Sun Aug 24 12:58:30 CEST 2003  Jochen Eisinger <c0ffee@penguin-breeder.org>
1635
1636         * Use SILC_COMMAND_PING to estimate the round-trip time to the
1637           server. Use this time to display a lag and disconnect when it
1638           exceeds a specified limit.
1639
1640           Affected files are irssi/src/silc/core/silc-{lag,core}.c.
1641
1642 Mon Aug 11 17:14:17 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
1643
1644         * Remove the channel auth list in normal server if router
1645           encofrces its list during connecting.  Send notify to channel
1646           to remove the mode to remove the list.  Affected files are
1647           silcd/server_util.c and silcd/packet_receive.c.
1648
1649 Wed Aug  6 14:52:04 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
1650
1651         * Added support for channel public keys.  Updated protocol specs
1652           and implemented it.  Affected files are
1653           silcd/command.c, command_reply.c, lib/silcclient/command.c,
1654           lib/silcclient/command_reply.c.
1655
1656 Wed Jul 23 12:17:01 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
1657
1658         * Ignore SIGXFSZ and SIGXCPU signals in server.  They can
1659           terminate the process on Linux.  Affected file silcd/silcd.c.
1660
1661 Mon Jun  2 19:13:27 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
1662
1663         * Check for NULL buffer in silc_buffer_clear.  Affected file
1664           is lib/silcutil/silcbuffer.h.
1665
1666         * Simplified the backup router protocol by removing the _GLOBAL
1667           types.  Updated protocol specs and the code.  Affected files
1668           are silcd/server_backup.[ch].
1669
1670 Thu Apr 24 19:50:25 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
1671
1672         * Deny '@' and '!' from nicknames since they are reserved
1673           by the SILC_COMMAND_INVITE and SILC_COMMAND_BAN commands.
1674           Updated protocol specs and the code.
1675
1676           Affected files are silcd/server_util.[ch].
1677
1678 Wed Apr  9 18:51:59 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
1679
1680         * Fixed stack overflow in Irssi SILC client.  Affected
1681           file irssi/src/silc/core/client_ops.c.
1682
1683         * Check that Host is set in ServerConnection and RouterConnection
1684           in silcd.conf.  Affected file silcd/serverconfig.c.
1685
1686         * Fixed crash in server with protocol completion callbacks,
1687           namely rekey and backup resuming protocols.  Affected files
1688           are silcd/server_backup.c and silcd/server.c.
1689
1690         * Fixed rekey protocol to not restart if it is started already.
1691           Affected files are lib/silcclient/client.c and
1692           silcd/server.c.c
1693
1694 Mon Mar 17 18:35:24 EET 2003  Pekka Riikonen <priikone@silcnet.org>
1695
1696         * Rewrote SilcList, affected file lib/silcutil/silc*list.h.
1697
1698         * Fixed EOF handling in SILC Config, affected file
1699           lib/silcutil/silcconfig.c.
1700
1701         * Fixed buffer overflows in lib/silcutil/silcstrutil.c.
1702
1703         * Fixed RESOLVING flag handling in JOIN notify and other
1704           notifys to handle the resolvings correctly in client library.
1705           Affected file lib/silcclient/client_notify.c.
1706
1707         * Do not send full INVITE and BAN lists in INVITE and BAN
1708           notifys, only the changed information.  Affected file
1709           silcd/command.c.
1710
1711         * Fixed INVITE notify sending in INVITE command, send it
1712           only when needed.  Affected file silcd/command.c.
1713
1714         * Handle the founder key change properly in CMODE_CHANGE
1715           notify.  Bug #122.  Affected file silcd/packet_receive.c.
1716
1717 Sun Mar  9 16:29:20 EET 2003  Pekka Riikonen <priikone@silcnet.org>
1718
1719         * Remove the mark for output (mark it only for input) after
1720           purging outgoing queue.  Prevents the "Error in select()"
1721           floods.  Affected file silcd/packet_send.c.
1722
1723         * Fixed incorrect connection deletion from client library
1724           after calling "connect" client operation.  Could cause
1725           crashes for example during reconnect timeouts.  Affected
1726           files are lib/silcclient/client.c and
1727           irssi/src/silc/core/client_ops.c.
1728
1729         * Check server private key file permissions before starting
1730           the server.  Affected file silcd/serverconfig.c.
1731
1732 Tue Feb  4 22:53:26 EET 2003  Pekka Riikonen <priikone@silcnet.org>
1733
1734         * NULL terminate allocated string in silc_buffer_strformat.
1735           Affected file lib/silcutil/silcbuffmt.c.
1736
1737         * Rewrote the invite/ban list string handling in server to
1738           use SilcBuffer instead.  Affected files are silcd/command.c
1739           and silcd/server_util.c.
1740
1741 Mon Feb  3 14:43:52 CET 2003  Pekka Riikonen <priikone@silcnet.org>
1742
1743         * Fixed double free in CMODE command when setting new HMAC
1744           for channel.  Affected file silcd/command.c.
1745
1746         * Added couple of missing memset's to zero sensitive memory.
1747           Affected files silcd/command.c, lib/silcclient/command.c.
1748
1749 Sun Jan 26 12:20:30 EET 2003  Pekka Riikonen <priikone@silcnet.org>
1750
1751         * Fixed a double free in INVITE command error handling in
1752           server.  Affected file silcd/command.c.
1753
1754         * Added macros SILC_SWAB_[16|32] to swab byte order of
1755           16-bit and 32-bit unsigned integers.  Affected file
1756           lib/silcutil/silctypes.h.
1757
1758         * Use the SILC_SWAB_16 instead of htons() in server when
1759           handling ports since the ports in structures are always
1760           in little-endian order (regardless of platform).  Affected
1761           file silcd/serverid.c and silcd/server_backup.c.
1762
1763 Tue Jan 21 17:18:04 EET 2003  Pekka Riikonen <priikone@silcnet.org>
1764
1765         * Send DISCONNECT in close admin command in server.  Affected
1766           file silcd/command.c.
1767
1768         * Check whether we are already connecting to a remote router
1769           (in addition of checking whether we are already connected)
1770           before creating new connection.  Affected file silcd/server.c.
1771
1772 Thu Jan 16 18:47:00 EET 2003  Pekka Riikonen <priikone@silcnet.org>
1773
1774         * Added better compiler and compiler flags checking in
1775           configure.
1776
1777         * Check that socket is valid after QoS is applied to data.
1778           Affected file lib/silcutil/unix/silcunixsockconn.c.
1779
1780         * Make sure the socket connecetion is not closed to early
1781           when closing connection in server.  Also make sure the
1782           connection is always closed after error in a protocol.
1783           Affected file silcd/server.c.
1784
1785 Wed Jan 15 11:03:36 CET 2003  Pekka Riikonen <priikone@silcnet.org>
1786
1787         * Removed --session and --dummy options from Irssi SILC Client.
1788           -d option is available only if --enable-debug was given.
1789           Affected files are irssi/src/silc/core/silc-core,
1790           irssi/src/core/session.c and irssi/src/fe-text/silc.c.
1791
1792 Tue Jan 14 12:25:09 CET 2003  Pekka Riikonen <priikone@silcnet.org>
1793
1794         * Added silc_buffer_steal to steal the data from the buffer.
1795           Affected file lib/silcutil/silcbuffer.h.
1796
1797 Sat Jan 11 18:16:29 CET 2003  Giovanni Giacobbi <giovanni@giacobbi.net>
1798
1799         * Fixed server crash with double Primary block in config file.
1800
1801           Fixed also various memory leaks around the config file
1802           parser.  Affected files lib/silcutil/silcconfig.c,
1803           silcd/serverconfig.c.
1804
1805         * Changed my nickname (Johnny Mnemonic) to my real name, this
1806           means that bugs introduced by him were actually introduced
1807           by me!
1808
1809 Tue Jan  7 21:58:53 CET 2003  Jochen Eisinger <c0ffee@penguin-breeder.org>
1810
1811         * Don't display "foo appears as foo\nYou're now known as foo"
1812           messages.  Affected file irssi/src/silc/core/client_ops.c
1813
1814 Tue Jan  7 20:08:15 EET 2003  Pekka Riikonen <priikone@silcnet.org>
1815
1816         * Fixed error handling of invalid client entry when calling
1817           commands in server.  Fixes a crash.  Affected file
1818           silcd/command.c.
1819
1820 Thu Dec 26 14:19:29 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1821
1822         * Added some sanity checks in server for correctness of the
1823           server configuration.  Affected file silcd/serverconfig.c.
1824
1825 Fri Dec 20 10:47:59 CET 2002  Pekka Riikonen <priikone@silcnet.org>
1826
1827         * Prevent endless resolving of user informations in USERS
1828           command by checking the command reply status correctly.
1829           Affected file lib/silcclient/command_reply.c.
1830
1831 Tue Dec 17 10:05:00 CET 2002  Pekka Riikonen <priikone@silcnet.org>
1832
1833         * Fixed file writing on WIN32 to use O_BINARY flag.  Affected
1834           file is lib/silcutil/silcfileutil.c.  A patch by Matthew
1835           Aldous <Matthew@Aldous.com>.
1836
1837         * Added better implementation using CriticalSection of
1838           SilcMutex on WIN32.  A patch by Mikko Lähteenmäki
1839           <mikko.lahteenmaki@pikabaana.net>.
1840
1841         * Added some Winsock WIN32 compatiblity defines into
1842           includes/silcwin32.h.
1843
1844 Mon Dec 16 19:33:05 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1845
1846         * Fixed double free in async host lookup code.  Affected file
1847           lib/silcutil/silcsockconn.c.
1848
1849         * On backup router handle now the SERVER_SIGNOFF from router
1850           for local connected servers too, and close the connections.
1851
1852           Do not process them as normally signing off servers when they
1853           really signoff by sending EOF fe, but always assume that
1854           router sends the SERVER_SIGNOFF.
1855
1856           Affected files silcd/server.c and silcd/packet_receive.c.
1857
1858         * Fixed socket unsetting when closing connections.  Affected
1859           files silcd/server.c and silcd/packet_send.c.
1860
1861         * Do not print the nickname in SERVER_SIGNOFF if we do not
1862           have it.  Prevents asserts in Irssi core.  It is possible we
1863           don't have the nick if it was just being resolved when server
1864           signoff.  Affected file irssi/src/silc/core/client_ops.c.
1865
1866 Thu Dec 12 23:22:50 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1867
1868         * Fixed autonick crashbug in client library.  Affected file
1869           lib/silcclient/client.c.
1870
1871         * Fixed Unix implementation of SilcMutex to really assert if
1872           the mutex is locked/unlcoked already.  Affected file
1873           lib/silcutil/unix/silcunixmutex.c.
1874
1875         * Fixed locking in silc_schedule_uninit.  It didn't lock
1876           when dispatching timeout tasks.  Affected file is
1877           lib/silcutil/silcschedule.c.
1878
1879         * Changed Win32 implementation of SilcThread to use modern
1880           Win32 interface.  Affected file is
1881           lib/silcutil/win32/silcwin32thread.c  A patch by Mikko L.
1882
1883 Thu Dec 12 12:06:59 CET 2002 Jochen Eisinger <c0ffee@penguin-breeder.org>
1884
1885         * Don't print signed messages when sending failed.  Affected files
1886           irssi/src/silc/core/silc-[servers.c/commands.h]
1887
1888         * Send adquate signal when founding a channel by joing it.  Affect
1889           file irssi/src/silc/core/client_ops.c
1890
1891 Wed Dec 11 21:46:19 CET 2002 Jochen Eisinger <c0ffee@penguin-breeder.org>
1892
1893         * Fix theme abstracts parsing.  Affected files irssi/default.theme,
1894           irssi/src/fe-common/core/themes.c
1895
1896 Wed Dec 11 20:20:07 EET 2002 Pekka Riikonen <priikone@silcnet.org>
1897
1898         * Fixed close command to use the port correctly when closing
1899           server connections.  Affected file silcd/idlist.c.
1900
1901         * Check for NULL outbuf in silc_socket_write.  It is possible
1902           that it is NULL is some odd case.  Affected files are
1903           lib/silcutil/[unix/win32]/silc[unix/win32]sockconn.c.
1904
1905         * Do not call final protocol callback for backup router
1906           resuming protocol when closing connection.  It is closed
1907           by timeout in case of error.  Affected file silcd/server.c.
1908
1909         * Backup reconnect to router if backup resuming protocol
1910           failed.  Affected file silcd/server_backup.c.
1911
1912 Wed Dec 11 10:01:26 CET 2002 Pekka Riikonen <priikone@silcnet.org>
1913
1914         * Fixed double free in SKE library error hadling when signature
1915           error occurred.  Affected file lib/silcske/silcske.c.
1916
1917         * Save the fingerprint to new SilcClientEntry after changing
1918           nickname.  Affected file lib/silcclient/client_notify.c.
1919
1920         * Print SIGNOFF in Irssi SILC client only if the nickname is
1921           known.  Prevents asserts in Irssi core.  It is possible we
1922           don't have the nick if it was just being resolved when it
1923           quit.  Affected file irssi/src/silc/core/client_ops.c.
1924
1925 Tue Dec 10 21:47:56 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1926
1927         * Fixed double free in invite list adding code when adding
1928           invite strings.  Affected file silcd/server_util.c.
1929
1930 Fri Dec  6 17:40:24 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1931
1932         * More log printing during backup router protocol.  Affected
1933           file silcd/server_backup.c.
1934
1935         * Removed backwards support for old private key file format.
1936           Affected file lib/silccrypt/silcpkcs.c.
1937
1938         * Removed backwards support for not-so-strict decryption length
1939           check, it's strict now.  Affected lib/silccrypt/silccipher.c.
1940
1941         * GETKEY to update the client entrys fingerprint too.
1942           Affected file lib/silcclient/command_reply.c.
1943
1944         * Added --without-libtoolfix for package builders using weird
1945           wrappers around libtool (BSD at least).
1946
1947 Thu Dec  5 22:29:46 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1948
1949         * Fixed backup router bugs:  When backup resumes router and
1950           receives a CHANNEL_MESSAGE packet the backup must not act
1951           as router since the packet header decryption would be
1952           different.  Also, when relaying packets to channel, do
1953           not re-encrypt packets on backup that came from the primary
1954           since the connection isn't really router-router connection.
1955           Affected files silcd/server.c, silcd/packet_send.c.
1956
1957         * Added checks in encryption/decryption that encryption/decryption
1958           length sent as argument really is multiple by block size.  Helps
1959           catching really weird bugs like the above backup router bugs
1960           when packets are being decrypted in wrong way.  Affected files
1961           lib/silccore/silcpacket.c, and lib/silccrypt/silccipher.c.
1962
1963         * Fixed padding generation in private key file encryption.
1964           Affected file lib/silccrypt/silcpkcs.c.
1965
1966 Thu Dec  5 16:35:23 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1967
1968         * Added ignore_message_signatures setting which can be used
1969           to ignore signatures in messages.  Affected files are
1970           irssi/src/silc/core/client_ops.c, silc-core.c.
1971
1972         * Fixed the libtoolfix to use command line options instead of
1973           environment variables.  They didn't work as expected.  Now,
1974           the libtool is fully run-time configurable.
1975
1976 Wed Dec  4 21:08:52 CET 2002  Jochen Eisinger <c0ffee@penguin-breeder.org>
1977
1978         * Verify signature payload for signed messages. Affected files
1979           irssi/src/silc/core/client_ops.h, irssi/src/silc/core/silc-servers.c,
1980           irssi/src/silc/core/silc-core.h
1981
1982         * Display signature verification result in public and private
1983           messages using theme abstracts. See irssi/default.theme for
1984           examples on their usage. Affected files
1985           irssi/default.theme, irssi/src/fe-common/silc/fe-messages.h,
1986           irssi/src/fe-common/silc/module-formats.[ch],
1987           irssi/src/fe-common/silc/fe-common-silc.c,
1988           irssi/src/fe-common/silc/Makefile.am
1989           irssi/src/fe-common/core/fe-messages.[ch]
1990
1991         * Fixed bugs in Irssi's theme parsing. Affected files
1992           irssi/src/fe-common/core/themes.c
1993
1994 Wed Dec  4 18:29:13 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1995
1996         * Calculate the correct length for signed messages before
1997           encrypting, it must be multiple by block size.  Affected
1998           file lib/silccore/silcmessage.c.
1999
2000         * silc_message_signed_get_public_key returns now both
2001           decoded and encoded public key.  Affected files are
2002           lib/silccore/silcmessage.[ch].
2003
2004         * Added libtoolfix script that makes the libtool more generic
2005           and configurable in run-time.  Now we can specify in run-time
2006           if what kind of libraries we want to create, regardless of
2007           configuration.  SIMs are now creates even if --disable-shared
2008           was explicitly given.
2009
2010 Tue Dec  3 23:26:55 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2011
2012         * Fixed founder key sending in CMODE command in client.
2013           Affected file lib/silcclient/command.c.
2014
2015         * Fixed CUMODE founder authentication in server to not check
2016           for client's public key since it's not supposed to do that.
2017           Affected file silcd/command.c.
2018
2019 Tue Dec  3 12:02:41 CET 2002  Jochen Eisinger <c0ffee@penguin-breeder.org>
2020
2021         * Set realname and hostname in NICK_REC records. Affected file
2022           irssi/src/silc/core/silc-nicklist.c
2023
2024 Mon Dec  2 20:50:20 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2025
2026         * Remove 1.0 protocol backwards compat code from client
2027           library.
2028
2029         * Added more reliable check for whether nickname did change
2030           or not, or whether only Client ID changed in NICK_CHANGE
2031           notify.  Affected file lib/silcclient/client_notify.c.
2032           Fixes bug in '@' character handling in a nickname.
2033
2034         * Added support for automatically parsing signature from
2035           the message payload.  Added new function
2036           silc_message_get_signature to return the payload to
2037           application.  Affected files lib/silccore/silcmessage.[ch].
2038
2039         * Changed the private_message and channel_message client
2040           operations to deliver the SilcMessagePayload to the
2041           application too.  Application can use it fe. to get the
2042           signature from the message for verification.  Affected
2043           file lib/silcclient/silcclient.h, client_channel.c and
2044           client_prvmsg.c.
2045
2046         * Redefined the signed payload for message payloads.
2047           Updated protocol specs and implemented.
2048
2049 Mon Dec  2 16:28:29 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2050
2051         * Fixed wrong invite and ban list handling in server command
2052           reply.  Affected files are silcd/command_reply.c,
2053           silcd/server_util.[ch].
2054
2055 Sun Dec  1 20:48:17 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2056
2057         * Fixed CMODE setting in server when founder mode was set.
2058           Affected file silcd/command.c.  Bug #95.
2059
2060         * Added support to setting specific public key in CMODE in
2061           Irssi SILC client.  Affected file lib/silcclient/command.c.
2062
2063         * Added support to use specific public key in CUMODE in
2064           Irssi SILC Client.  Affected file lib/silcclient/command.c.
2065
2066         * Added support for inviting and banning by public key in
2067           Irssi SILC client.  Affected file lib/silcclient/command.c.
2068
2069         * Fixed fingerprint/babbleprint showing in invite and ban
2070           list command replys.  Affected file is
2071           irssi/src/silc/core/client_ops.c.
2072
2073 Sun Dec  1 16:32:03 CET 2002  Jochen Eisinger <c0ffee@penguin-breeder.org>
2074
2075         * Format CMODE +c and +h to display both the mode and the argument
2076
2077 Sun Dec  1 18:17:22 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2078
2079         * Added test vectors and test programs for SHA-1, MD5,
2080           HMAC-SHA1 and HMAC-MD5.  New tests are located in
2081           lib/silccrypt/tests/.  Fixed also argument decoding bug in
2082           MD5 implementation.  Affected file lib/silccrypt/md5.c.
2083
2084         * Changed the channel private key and private message key
2085           generation (with static keys) to use SHA1 instead of MD5,
2086           as SHA1 is the mandatory hash function in SILC.  Affected
2087           file lib/silcclient/client_[channel/prvmsg].c.
2088
2089         * Changed the private key file encryption to use SHA1 instead
2090           of MD5.  Added support for the old generation and added
2091           automatic change of the key (to be removed later).  Affected
2092           files lib/silccrypt/silcpkcs.c.
2093
2094 Sat Nov 30 19:07:52 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2095
2096         * Load only files with .pub suffix in PublicKeyDir.  Affected
2097           file silcd/serverconfig.c.
2098
2099 Sat Nov 30 14:29:34 CET 2002  Johnny Mnemonic <johnny@themnemonic.org>
2100
2101         * Extended the SILC_SERVER_LOG_ERROR macro to all available logging
2102           channels.  Affected files silcd/silcd.c, silcd/server.h.
2103
2104         * Added the config directive PublicKeyDir for the client block.
2105           Affected files doc/exampe_silcd.conf.in, silcd/serverconfig.[ch].
2106
2107 Sat Nov 30 09:30:55 CET 2002  Pekka Riikonen <priikone@silcnet.org>
2108
2109         * Merged Toni's irssi/silc.conf patch.
2110
2111         * ROBODoc cleanup patch to lib/silccrypt/silcpkcs.h by johnny.
2112
2113         * Max alloc tests in allocation routines.  Affected file
2114           lib/silcutil/silcmemory.c.
2115
2116 Fri Nov 29 23:44:29 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2117
2118         * Fixed a typo in resuming code that fixed detach/resume code
2119           in server.  Bug #93.  Affected file silcd/packet_receive.c.
2120
2121 Thu Nov 28 17:17:11 CET 2002  Jochen Eisinger <c0ffee@penguin-breeder.org>
2122
2123         * Do reverse lookups for server when /connecting. Affected files
2124           irssi/silc.conf, irssi/src/core/servers.c, irssi/src/core/network.c,
2125           irssi/src/core/net-nonblock.*
2126
2127 Thu Nov 28 16:19:18 CET 2002  Pekka Riikonen <priikone@silcnet.org>
2128
2129         * Added library versioning for shared libraries.  Affected
2130           files configure.in.pre and lib/Makefile.am.pre.
2131
2132 Wed Nov 27 21:51:52 CET 2002  Jochen Eisinger <c0ffee@penguin-breeder.org>
2133
2134         * Display INVITE and BAN lists as specified by SILC 1.2
2135
2136 Wed Nov 27 16:01:11 CET 2002  Pekka Riikonen <priikone@silcnet.org>
2137
2138         * Do not send invite list back unless asked (when sending
2139           no arguments) or when list was modified.  Affected file
2140           silcd/command.c.
2141
2142         * Remove client from invite list in KILLED notify and in
2143           KILL command.  Affected file silcd/command.c and
2144           silcd/server.[ch].
2145
2146         * Fixed bugs in invite list handling in INVITE command.
2147           Affected files silcd/command.c and silcd/server_util.c.
2148
2149         * Merged with Irssi 0.8.6.
2150
2151         * Fixed UTF-8 in Irssi SILC Client, setlocale was missing.
2152           Affected file irssi/src/fe-text/silc.c.
2153
2154 Mon Nov 25 18:21:43 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2155
2156         * The silc_argument_get_[first/next] now return the argument
2157           type to caller.  Added silc_argument_payload_encode_one.
2158
2159           Affected files are lib/silccore/silcargument.[ch].
2160
2161         * Added support for the SILC 1.2 INVITE command and new
2162           invite lists to server.  Affected files are silcd/command.c,
2163           silcd/server_util.[ch] and silcd/packet_[receive/send].[ch].
2164
2165         * Added support for the SILC 1.2 BAN command and new
2166           ban lists to server.  Affected files are silcd/command.c,
2167           silcd/server_util.[ch] and silcd/packet_[receive/send].[ch].
2168
2169         * Added support to client sending new INVITE command.  Affected
2170           file is lib/silcclient/command.c.
2171
2172         * Added support to client sending new BAN command.  Affected
2173           file is lib/silcclient/command.c.
2174
2175         * Added support for removing client from invite list when kicked
2176           from channel, as SILC 1.2 dictates.  Affected files are
2177           silcd/packet_receive.c and silcd/command.c.
2178
2179 Sun Nov 24 18:26:42 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2180
2181         * If iv argument to silc_cipher_[encrypt/decrypt] is NULL, use
2182           automatically the cipher's internal IV.  Affected files
2183           lib/silccrypt/silccipher.[ch].
2184
2185         * Assure the RESUME_CLIENT packet is not sent to twice to
2186           backup router if the detached client was originated from
2187           the backup.  Affected file silcd/server.c.  Bug #76.
2188
2189         * Changed silc_sim_symname to not allocate memory.  Affected
2190           file lib/silcsim/silcsimutil.c.
2191
2192         * Fixed memory leaks with SIMs in server.  Affected files
2193           silcd/serverconfig.c, silcd/server.c.
2194
2195         * Fixed channel key distribution after resuming detached
2196           client.  Affected files silcd/packet_receive.c.
2197
2198         * Fixed channel's global_user boolean checking after detaching.
2199           Check it after changing the owner of the client not before.
2200           Affected file silcd/packet_receive.c.
2201
2202         * Fixed few double frees from client library.  Fixes at least
2203           Bug #81, possibly others too.
2204
2205         * UTF-8 decode topics also in JOIN command reply and TOPIC_SET
2206           notifys in Irssi SILC Client.  Affected file is
2207           irssi/src/silc/core/client_ops.c.  Bug #82.
2208
2209         * Applied Ville Räsänen's manual page and --mandir bugfix
2210           patch.  Affected files are configure.in.pre and Makefile.am.pre.
2211           Bug #88.
2212
2213 Fri Nov 22 18:34:20 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2214
2215         * Added support to backup router protocol for backup to tell
2216           normal server that it cannot use the backup router as primary
2217           because the primary isn't really down.  Updated protocol
2218           specs.
2219
2220         * Added support for primary router to tell backup router that
2221           resuming is not possible because the backup really isn't primary
2222           in the cell.  For example if backup disconnected itself the
2223           resuming is not allowed since the primary really did not
2224           go down.  Updated protocol specs.
2225
2226         * Removed MARS from crypto library.
2227
2228         * Defined the CTR mode and Randomized CBC mode in SILC.  The
2229           CTR mode is RECOMMENDED now in specification.  Defined also
2230           Serpent cipher as optional cipher.  Updated the protocol specs.
2231
2232 Thu Nov 21 12:43:28 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2233
2234         * Added support for inviting/banning by IP/MASK, public key,
2235           and explicit Client ID.  Redefined the command and notify
2236           types to allow easier forwards support for other methods
2237           of inviting/banning.  Updated protocol specs.
2238
2239         * Remove the client from channel's invite lists if the client
2240           is kicked or killed.  Updated protocol specs.
2241
2242         * Unified the Channel Message Payload and Private Message
2243           into one Message Payload.  Updated protocol specs and
2244           implemented.
2245
2246 Tue Nov 19 22:30:56 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2247
2248         * Don't wait for EOF after socket error has occurred, but
2249           close the connection.  Affected file is silcd/server.c.
2250
2251 Mon Nov 18 18:58:26 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2252
2253         * Added support for setting FOUNDER mode on channel with
2254           specific public key which can be set with CMODE command.
2255           Updated protocol specs and implemented in client and server.
2256
2257         * Fixed the Irssi SILC client to correctly shutdown the client
2258           library to avoid memory leaks.  Affected files are
2259           irssi/src/silc/core/silc-core.c and silc-servers.c.
2260
2261         * Deprecated the No Reply flag in SKE protocol and introduced
2262           "IV Included" flag which can be used to indicate that the IV
2263           is included in the ciphertext.  This makes it possible to use
2264           SILC on unreliable transport, such as UDP which may cause
2265           packet reordering and losses.  Updated protocol specs, did
2266           not implement yet.
2267
2268 Sun Nov 17 15:50:57 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2269
2270         * Fixed the MPI implementation of silc_mp_sizeinbase to return
2271           < 32 bit values in correct size.  Affected file is
2272           lib/silcmath/mp_mpi.c.
2273
2274 Sat Nov 16 13:14:45 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2275
2276         * Fixed the KE Start Payload parsing to check that mandatory
2277           fields are present.  Affected file lib/silcske/payload.c.
2278
2279         * Fixed compilation warnigs in Irssi SILC Client.  Affected
2280           files are irssi/src/silc/core/silc-query.c. client_ops.c.
2281
2282 Thu Nov 14 19:33:28 CET 2002  Jochen Eisinger <c0ffee@penguin-breeder.org>
2283
2284         * Print "nick now appears as newnick" and update Irssi's nicklist
2285           when you change your nick to "nick". Closes #62
2286
2287         * Never format your own nick. Closes #63
2288
2289 Thu Nov 14 09:44:54 CET 2002  Jochen Eisinger <c0ffee@penguin-breeder.org>
2290
2291         * SILC_UMODE_GONE changes are now propagated correctly to the
2292           Irssi client. Closes #54
2293
2294 Tue Nov 12 19:42:18 CET 2002  Jochen Eisinger <c0ffee@penguin-breeder.org>
2295
2296         * Fixed example in /HELP KEY
2297
2298         * Added expando $j which expands to current SILC Client version
2299
2300 Tue Nov 12 19:46:39 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2301
2302         * Fixed public key decoding in crypto library.
2303
2304         * Added better error printing to SKE library.
2305
2306 Tue Nov 12 08:50:12 CET 2002  Pekka Riikonen <priikone@silcnet.org>
2307
2308         * Fixed NICK command to not crash if nickname was not sent.
2309
2310 Mon Nov 11 19:32:00 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2311
2312         * Added Encrypt-Then-MAC order to SILC packet MAC generation.
2313           Deprecated the old Encrypt-And-MAC order.  Updated protocol
2314           specs and implemented.
2315
2316         * Added Encrypt-Then-MAC order to Channel Message Payload MAC
2317           generation.  Updated specs and implemented.
2318
2319 Sun Nov 10 12:20:56 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2320
2321         * Added support for rekey before 2^32 sequence number wraps.
2322           Affected files in server and client library.
2323
2324         * Padding must be at least 8 bytes now.  Implemented and updated
2325           protocol specs.
2326
2327         * Compute maximum padding for authentication packets to make
2328           passphrase approximation attacks impossible.  Affected files
2329           in client library and in server.
2330
2331         * Fixed PING command sending in client library and handling in
2332           server.  The server ID must be ID Payload, not raw ID data.
2333           Affected files in server and client library.
2334
2335         * Defined that all public keys sent in commands and notify
2336           payloads are actually Public Key Payloads not raw public key
2337           data.  Updated protocol specs and implemented.
2338
2339         * Updated protocol version to 1.2.  Updated specs and code.
2340
2341         * Added ERR_UNSUPPORTED_PUBLIC_KEY and ERR_OPERATION_ALLOWED
2342           status types.  Updated specs and the code.
2343
2344         * Added support for normal client to kill its own entries from
2345           the network.  Updated protocol specs and the code.
2346
2347         * Defined the SILC_MESSAGE_FLAG_SIGNED.  Updated protocol specs
2348           and added initial implementation.
2349
2350         * Added MAC field to the Private Message Payload to protect
2351           against chosen ciphertext attacks.  Updated the protocol specs
2352           and implemented.
2353
2354         * Added idle and signon fields to the ATTRIBUTE_SERVICE
2355           attribute to indicate the user's current idle and signon time
2356           of a service.  Updated protocol specs and implemented.
2357
2358 Thu Nov  7 19:21:10 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2359
2360         * Added "do_not_bind" argument to silc_client_file_send what
2361           can be used to not bind locally but assume the file receiver
2362           provides the point of connect.  Usefull when sender is behind
2363           NAT device.  Affected file lib/silcclient/silcclient.h and
2364           client_ftp.c.
2365
2366         * Added -no-listener option to FILE SEND command in Irssi SILC
2367           client.  Affected file irssi/src/silc/core/silc-servers.c.
2368           Renamed FILE RECEIVE to FILE ACCEPT.
2369
2370         * Confirm passphrase for private key encryption in
2371           silc_create_key_pair and silc_change_private_key_passphrase.
2372           Affected files are lib/silcutil/silcapputil.c.
2373
2374 Thu Nov  7 10:05:28 CET 2002  Pekka Riikonen <priikone@silcnet.org>
2375
2376         * Move silc_client_packet_send back to internal, added
2377           silc_client_send_packet, a bit simpler function for application.
2378           Affected files lib/silcclient/silcclient.h, client.c and
2379           client_internal.h.
2380
2381         * Moved the SilcClientEntry, SilcChannelEntry and
2382           SilcServerEntry to silcclient.h to be public and documented
2383           them for application.  Affected files are
2384           lib/silcclient/silcclient.h and idlist.h.
2385
2386 Wed Nov  6 17:18:13 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2387
2388         * Fixed manual page installation patch by Ville Räsänen.
2389           USERS help page fix patch by Ville Räsänen
2390
2391         * Changed the silc_client_command_call interface to make
2392           the command call simpler for the application.  The library
2393           now handles the command line parsing, command finding and
2394           execution.  Application only needs to call the function
2395           with the command line.  Affected files are
2396           lib/silcclient/silcclient.h, command.[ch].
2397
2398         * Fixed silc_get_input to NULL-terminate the returned input.
2399           Affected file lib/silcutil/silcutil.c.
2400
2401         * Resolve the client's public key in JOIN command if the
2402           founder auth data is being requested but we don't know the
2403           client's public key.  Affected file silcd/command.c.
2404           Bug #53.
2405
2406 Mon Nov  4 16:02:59 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2407
2408         * Print notify for server opers when backup router comes
2409           online.  Affected file silcd/server.c.
2410
2411         * Fixed the INVITE command to send the invite list in
2412           command reply.  Affected file silcd/command_reply.c.
2413
2414         * Fixed MOTD command reply sending.  Affected file
2415           silcd/command.c.
2416
2417         * UTF-8 decode the topic in TOPIC command reply and LIST
2418           command reply in Irssi SILC client.  Affected file is
2419           irssi/src/silc/core/client_ops.c.
2420
2421 Sun Nov  3 17:59:15 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2422
2423         * Fixed the INVITE command to not crash Irssi SILC client
2424           when given without nickname argument.  AFfected file
2425           irssi/src/silc/core/client_ops.c.
2426
2427         * Fixed double free in WHOIS query on normal server when
2428           forwarding query to router.  Affected file is
2429           silcd/server_query.c.
2430
2431         * Fixed WATCH command reply handling on normal server which
2432           was missing altogether.  Affected file silcd/command_reply.c.
2433           Bug #44.
2434
2435 Sun Nov  3 00:42:05 EET 2002  Mika Boström <bostik@lut.fi>
2436
2437         * Added man-pages for silc(1), silcd(8) and silcd.conf(5).
2438           Included yodl sources for each of these. Also modified
2439           Makefile.am prototype to install these files to proper
2440           locations. Updated CREDITS. Affected file Makefile.am.pre,
2441           new files doc/*.yo, doc/silc.1, doc/silcd.conf.5,
2442           doc/silcd.8.
2443
2444 Sat Nov  2 21:26:56 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2445
2446         * Added support for encrypted private key files.  Now
2447           passphrase must be provided when new key pair is created
2448           (can be empty though), and prompted when loading the
2449           private key.  Added support for loading the old-style
2450           non-encrypted private keys as well.  Affected files
2451           lib/silccrypt/silcpkcs.[ch], Irssi SILC client and
2452           SILC Server.
2453
2454         * Fixed silc_get_input to accept input on all terminals.
2455           Affected file lib/silcutil/silcutil.c.
2456
2457         * Moved the Irssi SILC client key loading and other stuff
2458           to be called after the arguments and UI is initialized.
2459           Affected file irssi/src/silc/core/silc-core.c.  Bug #31.
2460
2461         * Added -P option to Irssi SILC client which can be used
2462           to change the passphrase of the private key.  Affected
2463           file irssi/src/silc/core/silc-core.c.
2464
2465         * Added silc_change_private_key_passphrase apputil routine
2466           to lib/silcutil/silcapputil.[ch].
2467
2468 Sat Nov  2 12:53:09 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2469
2470         * Fixed connection closing in client library to not crash.
2471           Moved the connection freeing totally to function
2472           silc_clinet_del_connection.  Affected file
2473           lib/silcclinet/client.c.
2474
2475 Fri Nov  1 18:57:02 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2476
2477         * Changed includes/silcincludes.h to silcincludes.h.in to
2478           include configuration specific information.  The silcdefs.h
2479           is not included in to installation anymore (it's only
2480           compilation time header).
2481
2482 Fri Nov  1 10:30:26 CET 2002  Pekka Riikonen <priikone@silcnet.org>
2483
2484         * Moved the SilcClient and SilcClientConnection from client.h
2485           to the public lib/silcclient/silcclient.h.  Changed the
2486           structures a bit.
2487
2488 Thu Oct 31 22:44:07 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2489
2490         * If version string in silc_clinet_alloc is NULL the library
2491           puts it automatically.  Affected file lib/silcclient/client.c.
2492
2493         * Changed the version strings from variables to #define's
2494           in includes/silcversion.h.
2495
2496 Wed Oct 30 16:17:30 CET 2002  Pekka Riikonen <priikone@silcnet.org>
2497
2498         * Added shared library complation support.
2499
2500 Tue Oct 29 21:48:55 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2501
2502         * Added lib/silcutil/silcapputil.[ch] for application
2503           utility functions.  It includes routines for applications'
2504           convenience.  Added silc_create_key_pair, silc_show_public_key
2505           and silc_load_key_pair functions.
2506
2507 Tue Oct 29 17:36:44 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2508
2509         * Send RESUME_CLIENT packet from router to backup routers
2510           to in resuming.  Affected file silcd/packet_receive.c.
2511
2512 Mon Oct 28 21:23:39 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2513
2514         * In IDENTIFY command parsing, send all other IDs except
2515           Client IDs explicitly to router for resolving on normal
2516           server.  Also check that ID received in WHOIS command is
2517           always Client ID, others are not allowed.  Affected file
2518           silcd/server_query.c.
2519
2520         * Merged latest changes from irssi.org CVS.
2521
2522 Sun Oct 27 11:44:32 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2523
2524         * Merged c0ffee's /set heartbeat patch to Irssi SILC client.
2525           Affected files irssi/src/silc/core/silc-core, silc-server.c.
2526
2527         * Fixed the heartbeat sending in Irssi SILC client.  Moved
2528           the silc_client_packet_send to silcclient.h for application
2529           usage.  Affected files lib/silcclient/client_internal.h
2530           lib/silcclient/silcclient.h.
2531
2532         * Fixed a bug in query resolving in server.  Used wrong
2533           variable in a for loop and crashed.  Affected file is
2534           silcd/server_query.c.
2535
2536         * Server constructs requested attributes only to locally
2537           connected clients.  Affected file silcd/server_query.c.
2538           Bug #36.
2539
2540         * Fixed a bug when sending resolving from router to server
2541           with requested attributes.  The constructed WHOIS command
2542           was incorrect.  Affected file silcd/server_query.c.
2543           Bug #38.
2544
2545         * Fixed Requested Attributes saving in WHOIS command reply.
2546           The length of the data buffer must be saved too.  Affected
2547           file silcd/command_reply.c.
2548
2549         * Update the client entry's servername after detaching is
2550           over.  Affected file silcd/packet_receive.c.  Bug #37.
2551
2552         * Resolve incomplete client entrys in CUMODE_CHANGE and
2553           CMODE_CHANGE notifys.  Affected file is
2554           lib/silcclient/client_notify.c.  Bug #42.
2555
2556 Thu Oct 24 12:22:35 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2557
2558         * Fixed channel key packet processing bug on backup router
2559           during backup resuming protocol.  Affected file is
2560           silcd/packet_receive.c.
2561
2562         * Fixed memory leaks in server.  Affected files are
2563           silcd/server.c and silcd/packet_receive.c.
2564
2565         * Fixed packet decryption problem when backup router encrypted
2566           channel message with wrong key during backup resuming
2567           protocol.  Affected file silcd/packet_send.c.
2568
2569         * ROBODoc documented lib/silccrypt/silccipher.h.  A patch by
2570           Toni Willberg (toniw@iki.fi)
2571
2572         * Changed the SilcCipher context to be private.  Changed the
2573           silc_cipher_get_iv to just return pointer to the IV.  Added
2574           silc_cipher_get_name to return the name of the cipher.
2575           Fixed code all around to support these changes.  Affected
2576           files are lib/silccrypt/silccipher.[ch], client library and
2577           server.
2578
2579 Wed Oct 23 19:01:41 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2580
2581         * Fixed unaligned access in lib/silccore/silcattrs.c.
2582
2583         * Fixed libtool linking in lib/silcsim/Makefile.am.
2584
2585         * Fixed services attribute printing.  Affected files is
2586           irssi/src/silc/core/silc-queries.c.
2587
2588 Wed Oct 23 09:51:04 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
2589
2590         * Fixed a crashbug in incoming server accepting.  Affected
2591           file silcd/server.c.
2592
2593 Tue Oct 22 13:02:32 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2594
2595         * Added automatically generated index to Toolkit Reference
2596           Manual.
2597
2598         * Added support for Postscript Toolkit Reference Manual.
2599
2600 Mon Oct 21 21:30:40 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
2601
2602         * Merged DISCONNECT fix, and autoconn port fix from Irssi
2603           CVS.
2604
2605 Sun Oct 20 19:54:55 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2606
2607         * Added 'send_events' boolean argument to the function
2608           silc_schedule_set_listen_fd which sends the set events to
2609           the application explicitly if set to TRUE.  Default action
2610           should be FALSE.  Affected file lib/silcutil/silcschedule.[ch],
2611           lib/silcclient/client_internal.h and silcd/server_internal.h.
2612
2613         * Added silc_compare_timeval to determine which time values
2614           is smaller.  Affected file lib/silcutil/silcutil.[ch].
2615
2616         * Added sort-of "Quality of Service" (QoS) support to
2617           SilcSocketConnection.  Data reception can be controlled with
2618           rate limit per second and/or read data length limit.
2619           Added silc_socket_set_qos.  Affected files are
2620           lib/silcutil/silcsockconn.[ch] and unix/silcunixsockconn.c.
2621
2622         * Added the QoS configuration to SILC Server configuration
2623           file.  Affected files are silcd/serverconfig.[ch] and
2624           server.c.
2625
2626 Sun Oct 20 14:12:24 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
2627
2628         * Merged with irssi.org CVS.
2629
2630         * Failed OPER and SILCOPER authentications are now logged.
2631           Affected file silcd/command.c.  Bugs #25.
2632
2633 Sat Oct 19 13:32:15 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
2634
2635         * ROBODoc documented lib/silcutil/silcbuffer.h and
2636           lib/silcutil/silcdlist.h.  Patch by Ville Räsänen
2637           <ville.rasanen@iki.fi>.
2638
2639 Fri Oct 18 10:51:04 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2640
2641         * Added support for auto-passphrase authentication from the
2642           config file during connecting which was not implemented
2643           yet.  Affected file irssi/src/silc/core/client_ops.c.
2644
2645         * Fixed a bug in authentication protocol failure handling which
2646           was processing wrong callback context.  Affected files
2647           are lib/silcclient/client.c and protocol.c.
2648
2649         * Fixed the /ATTR allow off to actually work.  Affected file
2650           is irssi/src/silc/core/silc-queries.c.
2651
2652         * Fixed the /ATTR -del to work.  Affected file is
2653           irssi/src/silc/core/silc-queries.c.
2654
2655 Thu Oct 17 23:45:12 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2656
2657         * Fixed string formatting crashbug in lib/silccore/silcattrs.c.
2658
2659         * Fixed mask attribute adding in Irssi SILC client.  Affected
2660           file irssi/src/silc/core/silc-queries.c.
2661
2662 Thu Oct 17 16:40:39 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2663
2664         * Added support for saving the requested attributes in
2665           WHOIS to directory.  Affected file is
2666           irssi/src/silc/core/silc-queries.c.
2667
2668 Wed Oct 16 17:40:56 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2669
2670         * Added support for parsing VCard fields that do not have
2671           the TYPE= for types.  Affected file lib/silcutil/silcvcard.c.
2672
2673         * Fixed a double free bug in hash table foreach function
2674           if the entry was deleted in the foreach callback.  Affected
2675           file lib/silcutil/silchashtable.c.
2676
2677 Tue Oct 15 18:05:24 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2678
2679         * Added silc_attribute_get_verify_data to return the signature
2680           verification data for either user digital signature or
2681           server digital signature in Requested Attributes.  Affected
2682           files are lib/silccore/silcattrs.[ch].
2683
2684         * Added silc_vcard_alloc which is used to allocated dynamic
2685           SilcVCard context.  The silc_vcard_free now checks whether
2686           the context is dynamically allocated or not.  Affected files
2687           are lib/silcutil/silcvcard.[ch].
2688
2689 Mon Oct 14 17:55:44 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2690
2691         * Periodically remove the NOATTR status from client entry
2692           so that the client may take the attributes in use even after
2693           server has resolved them unsuccessfully earlier.  Affected
2694           file silcd/server_query.c and idlist.h.
2695
2696         * Moved sha1hash and md5hash from client->internal to
2697           SilcClient for application usage.  Affected files are
2698           lib/silcclient/client.h and client_internal.h.
2699
2700         * Fixed attribute encoding and decoding bugs.  Affected
2701           files lib/silccore/silcattrs.[ch].
2702
2703         * Added ATTR command to Irssi SILC Client which is used to
2704           manage user's Requested Attributes sending and values for
2705           WHOIS command.  Affected files around Irssi SILC client.
2706
2707 Mon Oct 14 14:33:54 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2708
2709         * Added silc_buffer_strformat which can be used to format
2710           strings into a buffer which size is automatically increased.
2711           Affected file lib/silcutil/silcbuffmt.[ch].
2712
2713         * Added implementation of VCard (RFC 2426) which can be used
2714           as part of Requested Attributes in WHOIS command.  Affected
2715           file lib/silcutil/silcvcard.[ch].
2716
2717 Fri Oct 11 23:52:17 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2718
2719         * Some strncat -> silc_strncat changes our the core and
2720           client library.
2721
2722         * Added SILC_SKE_STATUS_SIGNATURE_ERROR and OUT_OF_MEMORY
2723           errors.  Added better error printing to SKE library.
2724           Affected files lib/silcske/silcske.c, silcske_status.h and
2725           payload.c.
2726
2727         * Save the PKCS key length even if only private key is set to
2728           SilcPKCS.  Affected file lib/silccrypt/silcpkcs.[ch] and rsa.c.
2729
2730         * Fixed the usage of silc_pkcs_get_key_len since it returns the
2731           length in bits not in bytes.  Affected files are
2732           lib/silcske/silcske.c, lib/silccore/silcauth.c and
2733           silcd/server_query.c.
2734
2735 Wed Oct  9 17:22:57 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2736
2737         * Added silc_attribute_payload_encode_data to directly encode
2738           the data into the attributes buffer.  Renamed function
2739           silc_attribute_payload_parse_list to silc_attribute_payload_parse.
2740           Affected files are lib/silccore/silcattrs.[ch].
2741
2742         * silc_hash_table_find_foreach calls the foreach function now
2743           once even if the nothing was found with context set to NULL.
2744           Affected file lib/silcutil/silchashtable.[ch].
2745
2746         * Remove the RESOLVING flag from client entry after received
2747           the Requested Attributes from the client.  Fixed memory leak
2748           in client entry freeing.  Affected files silcd/server_query.c
2749           and idlist.c.
2750
2751         * Added Requested Attributes support into SILC Client Library.
2752           It is not able to send requested attributes in WHOIS command,
2753           and also receive and process requested attributes.  Added
2754           silc_client_attribute_[add|del] and silc_client_attributes_get
2755           functions.  Added also `ignore_requested_attributes' to the
2756           SilcClientParams to not use attributes in client.  Affected
2757           files are lib/silcclient/command.c, client_attrs.[ch],
2758           silcclient.h, client_internal and client.[ch].
2759
2760         * Changed the silc_client_get_client_by_id to support Requested
2761           Attributes, it takes them as argument now.  Affected file
2762           is lib/silcclient/silcclient.h, and idlist.c.
2763
2764         * Added -details option to WHOIS command in Irssi SILC Client
2765           to support the requested attributes.  By default it requests
2766           all attributes.  Affected file lib/silcclient/command.c and
2767           irssi/doc/help/in/whois.in.
2768
2769 Tue Oct  8 17:58:28 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2770
2771         * Add also SERVICE attribute for server-constructed attribute
2772           data.  Also digitally sign the attributes and add
2773           SERVER_DIGITAL_SIGNATURE attribute.  Affected file is
2774           silcd/server_query.c.
2775
2776 Mon Oct  7 18:25:35 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2777
2778         * Changed the silc_attribute_payload_encode to support list
2779           of attributes (function may be called several times to add
2780           a new attribute).  Removed the silc_attribute_payload_encode_list
2781           function.  The encoding function now also automatically encodes
2782           the data, so the caller does not need to do that.  Affected
2783           files lib/silccore/silcattrs.[ch].
2784
2785         * Added support for replying on behalf of the user to the
2786           Requested Attributes in WHOIS command in the server.  Affected
2787           file silcd/server_query.c.
2788
2789         * SILC_NOT_IMPLEMENTED macro use SILC_LOG_INFO now instead of
2790           SILC_LOG_DEBUG.  Affected file lib/silcutil/silclog.h.
2791
2792 Sun Oct  6 16:48:32 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2793
2794         * Don't swtich to become primary router if we are backup if
2795           decryption error has occurred.  Affected file silcd/server.c.
2796
2797         * Fixed a bug in backup router IP address comparison in
2798           silc_server_backup_get.
2799
2800           Save now also the port of the server/router and use that
2801           in comparison as well.  Affected file silcd/server_backup.c.
2802
2803         * Normal server now reconnects to backup router automatically
2804           if connection is lost to it.  Affected file silcd/server.c.
2805
2806 Thu Sep 26 13:51:02 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
2807
2808         * If packet processing fails (like integrity check fails)
2809           the connection is closed now.  Affected files are
2810           lib/silccore/silcpacket.c and silcd/server.c.
2811
2812 Mon Sep 23 10:59:39 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
2813
2814         * Fixed double free in RSA public key set function
2815           silc_rsa_set_public_key.  Affected file lib/silccrypt/rsa.c.
2816           Bug #29.
2817
2818 Sun Sep 22 14:54:05 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2819
2820         * Rewrote WHOIS, WHOWAS and IDENTIFY commands in the server.
2821           Added server_query.[ch] which provides one interface for
2822           querying information using all three commands.
2823
2824         * Changed all "typedef unsigned char" in core library to
2825           "typedef SilcUInt8".
2826
2827 Sat Sep 21 21:36:45 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2828
2829         * Added silc_strncat into lib/silcutil/silcstrutil.[ch].
2830
2831         * Renamed silc_server_get_client_resolve to
2832           silc_server_query_resolve and moved to server_query.[ch].
2833
2834 Wed Sep 18 18:28:04 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2835
2836         * Resumed client packet handling from server put the resumed
2837           client on wrong list on router and caused the client not
2838           be present on the network anymore.  Now fixed to put the
2839           client to correct list.  Affected file silcd/packet_receive.c.
2840
2841 Wed Sep 18 15:13:48 CEST 2002  Johnny Mnemonic <johnny@themnemonic.org>
2842
2843         * Various cleanup in error message output in config parsing code
2844           and in server init code.  Fixed error log files containing
2845           too many newlines ('\n') in some situations.  Affected files are
2846           silcd/serverconfig.c, silcd/silcd.c, and silcd/server.c.
2847
2848 Wed Sep 18 10:51:23 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
2849
2850         * Use the reverse lookupped hostname in client internals
2851           instead of one user provided us as remote server name.
2852           Affected file lib/silcclient/client.c.
2853
2854 Mon Sep 16 12:02:54 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2855
2856         * Added 'app_context' to silc_schedule_init.  It is an
2857           application specific context that is delivered to application
2858           in task callback functions.  Affected files are
2859           lib/silcutil/silcutil.[ch].
2860
2861         * The hb_context in SilcSocketConnection is not freed
2862           automatically anymore (application must free it).  Freeing
2863           it automatic is inconsistent.  Affected files are
2864           lib/silcutil/silcsockconn.[ch].
2865
2866 Sun Sep 15 22:16:19 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2867
2868         * Added support for removing explicitly added client connections
2869           in rehash and closing the client connections if they were
2870           unconfigured in the rehash.  Affected file silcd/server.c.
2871
2872         * Added support for aborting automatically pending commands
2873           that never receives the reply (to avoid memory leaks).
2874           Added also silc_server_command_pending_timed to set the
2875           specific timeout for pending command.  Affected files are
2876           silcd/command[_reply].[ch].
2877
2878         * Added SILC_STATUS_ERR_TIMEDOUT status.  Updated protocol
2879           specs and lib/silccore/silcstatus.h.
2880
2881 Sun Sep 15 12:25:10 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2882
2883         * Changed the silc_get_time to accept time value as argument
2884           or if zero is sent return current local time.  Affected
2885           file lib/silcutil/silcutil.[ch].
2886
2887         * Added STATS command to client library and Irssi SILC client.
2888           Patch provided by Ville Räsänen <ville.rasanen@iki.fi>.
2889
2890 Wed Sep 11 09:22:00 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
2891
2892         * Assure that channel key is set before sending it.  May
2893           crash server otherwise.  Affected file silcd/packet_send.c.
2894
2895 Tue Sep 10 09:50:08 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
2896
2897         * Assure that endless loop cannot happen with detached client
2898           resolving on normal server.  Added idlist status
2899           SILC_IDLIST_STATUS_RESUME_RES.   Affected files are
2900           silcd/idlist.h and silcd/packet_receive.c.
2901
2902 Mon Sep  9 12:18:18 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
2903
2904         * Incoming file transfer request cannot use same session as
2905           the sending session.  This can happen when sending file to
2906           yourself.  Crashed the client on quit.  Affected file
2907           lib/silcclient/client_ftp.c.  Bug #24.
2908
2909 Sun Sep  8 18:39:25 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2910
2911         * Implemented the draft-riikonen-precense-attrs draft and
2912           the Attribute Payload into the lib/silccore/silcattrs.[ch].
2913
2914 Sun Sep  8 13:13:44 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2915
2916         * Distribute the SERVER_SIGNOFF notify also to local backup
2917           routers from the primary router.  The backup router may not
2918           have the signing of local server directly connected and need
2919           to know about the signoff.  Affected file silcd/server_util.c.
2920
2921         * Use the primary router as the origin of the locally connected
2922           server when it is disconnecting from the backup router since
2923           that's where it really is coming from.  Now the clients from
2924           the disconnecting server are removed correctly and "shadow"
2925           clients are not left to the backup router.  Affected file
2926           silcd/server.c.
2927
2928 Sat Sep  7 22:26:50 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2929
2930         * If normal server is standalone and found existing but disabled
2931           channel, do not re-create the channel since it creates
2932           duplicate same channels.  Affected file silcd/server.c.
2933
2934         * Added anonymous client connections support to server.  New
2935           "anonymous" configuration option to ConnectionParams section
2936           added.  If set to true, the username and hostname information
2937           of the client will be scrambled and anonymous user mode is
2938           set automatically to the user.  Affected files are
2939           silcd/serverconfig.[ch], silcd/packet_receive.c and server.c.
2940
2941 Sat Sep  7 16:02:09 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2942
2943         * In JOIN notify handling, mark that the cache entry of the
2944           client cannot be expired.  Can cause crashes on normal
2945           server (asserts client->channels).  Affected file is
2946           silcd/packet_receive.c.
2947
2948         * From now on distribution versions are used as protocol versions
2949           instead of by default using the Toolkit base version as protocol
2950           version.  Affected file prepare.
2951
2952         * Do not set the locally resolved hostname for local client
2953           entry but take what server sends.  This way the real hostname
2954           is showed in WHOIS for yourself.  Affected file is
2955           lib/silcclient/idlist.c and lib/silcclient/client.c.
2956
2957         * Resolve local info with IDENTIFY when connecting to server.y
2958
2959 Sat Sep  7 14:22:43 CEST 2002 Lubomir Sedlacik <salo@silcnet.org>
2960
2961         * Rewritten check for POSIX threads.  Use --with-pthreads[=DIR]
2962           for implied search (not needed on platforms which has native
2963           pthreads library).  Use --without-pthreads to disable threads.
2964           Affected file is configure.in.pre
2965
2966         * Fixed --with-iconv on platforms which need to bypass (broken)
2967           native iconv().  Affected file is configure.in.pre
2968
2969 Sat Sep  7 15:08:13 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2970
2971         * Moved -C option parsing in Irssi SILC client at same time
2972           as other options.  The UI was initialized earlier and caused
2973           problems on command line.  Bug #16.  Affected file is
2974           irssi/src/silc/core/silc-core.c.
2975
2976 Mon Sep  2 23:00:30 CEST 2002 Johnny Mnemonic <johnny@themnemonic.org>
2977
2978         * Added global variable silc_log_timestamp that tells silclog
2979           wether to print or not the timestamp in the logging files.
2980           Affected file lib/silcutil/silclog.[ch].
2981
2982         * Added silcd configuration option Timestamp in the Logging
2983           section.  Affected file silcd/serverconfig.[ch],
2984           doc/example_silcd.conf.in.
2985
2986 Fri Aug 30 08:57:33 CEST 2002 Pekka Riikonen <priikone@silcnet.org>
2987
2988         * Fixed fingerprint checking to check for entirely empty
2989           fingerprint instead of two first bytes when determining
2990           if it is set.  Bug #18.  Affected file silcd/command.c.
2991
2992         * Fixed duplicate PKCS name registering to not allow it.
2993           Bugs #17.  Affected file lib/silccrypt/silcpkcs.c.
2994
2995 Sun Aug 25 08:02:04 CEST 2002 Lubomir Sedlacik <salo@silcnet.org>
2996
2997         * Conditionalize non-gcc compiler optimizations for various
2998           platforms, enable those commented out.  Cleanups.
2999           Affected file lib/silcmath/mpi/configure.in
3000
3001 Sat Aug 24 15:11:32 EEST 2002 Timo Sirainen <tss@iki.fi>
3002
3003         * silc_rng_exec_command() left zombie processes if command
3004           didn't generate any output.  Affected file
3005           lib/silccrypt/silcrng.c
3006
3007 Fri Aug 23 22:05:44 CEST 2002 Lubomir Sedlacik <salo@silcnet.org>
3008
3009         * Rewrote iconv checking, introduce --with-iconv for systems
3010           which rely on libiconv.  Check if iconv() provided by libc
3011           is good enough, otherwise demand libiconv.  Affected file
3012           configure.in.pre
3013
3014 Fri Aug 23 07:10:52 CEST 2002 Lubomir Sedlacik <salo@silcnet.org>
3015
3016         * Search for ldopen() also in libc.  This enables SIM support
3017           on *BSD systems.  Based on patch from Alex Zepeda.  Affected
3018           file configure.in.pre
3019
3020 Sun Aug 18 04:44:30 CEST 2002 Lubomir Sedlacik <salo@silcnet.org>
3021
3022         * Don't call AM_CONDITIONAL conditonally for SILC_THREADS.
3023           This fixes prepare on *BSD systems.  Affected file
3024           configure.in.pre
3025
3026 Sun Aug  4 15:55:40 CEST 2002 Pekka Riikonen <priikone@silcnet.org>
3027
3028         * More fixed for not having purge timeout for global clients
3029           that are on channel.  Affected files silcd/command_reply.c
3030           and server_util.c.
3031
3032         * Fixed the rekey protocol to work with backup router connections.
3033           Rekey packets are now allowed on disabled connections as
3034           well.  Affected files silcd/packet_send.c and server.c.
3035
3036         * Do not switch to be as backup router when shutting down and
3037           closing the primary connection.  Affected file silcd/server.c.
3038
3039         * Fixed memory leaks in backup router deleting.  Added
3040           silc_server_backup_free to free all data during shutdown of
3041           server.  Affected files silcd/server_backup.[ch].
3042
3043 Sun Jul 14 21:33:32 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3044
3045         * Do not process commands if the sock->user_data is NULL.
3046           Affected file silcd/command.c.
3047
3048 Tue Jul  9 19:03:11 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3049
3050         * Fixed buffer overflow and security problems (loosing bits
3051           in CFB encryption) in SILC RNG.  Problems reported by
3052           Markku-Juhani O. Saarinen <mjos@saturn.tcs.hut.fi>.
3053
3054 Sun Jul  7 13:10:01 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3055
3056         * Added yet more checks that client is not expired on global
3057           list if it is on channels.  Affected file is
3058           silcd/command_reply.c.
3059
3060 Sat Jul  6 11:45:11 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3061
3062         * Merged c0ffee's MIME signal patch which adds support for
3063           sending also MIME messages in Irssi SILC Client, and handling
3064           received MIME messages in a signal (and perhaps doing something
3065           to non-textual MIME messages).
3066
3067 Sun Jun 30 01:30:22 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3068
3069         * Fixed pending command deletion in server and client library
3070           to check the whole list instead of breaking after first found.
3071           The affected files are silcd/command.[ch] and
3072           lib/silcclient/command.[ch].
3073
3074 Sat Jun 29 17:40:12 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3075
3076         * Return NO_SUCH_CHANNEL error in USERS for channel that is
3077           secret or private, otherwise it's possible to find out
3078           whether a secret channel exists or not.  Affected file
3079           silcd/command.c.
3080
3081         * If CMODE change fails during the mode setting, assure that
3082           the old mode mask is set for the channel back.  Affected
3083           file silcd/command.c.
3084
3085         * Fixed passphrase saving on +a channel on normal server
3086           after successful JOIN command.  Affected file silcd/command.c.
3087
3088 Fri Jun 28 11:53:25 CEST 2002 Pekka Riikonen <priikone@silcnet.org>
3089
3090         * Remove server/router operator privileges in DETACH command,
3091           since it's possible to resume to server where these
3092           privileges would not be allowed for the client.  Affected
3093           file silcd/command.c.
3094
3095         * Do not set to wait for backup in rehash of the server.
3096           Affected file silcd/server.c.
3097
3098         * Do not check listener sockets when counting how many
3099           socket connections we have.  Affected file is
3100           silcd/server_util.c.
3101
3102         * Do not announce disconnected clients that are remaining
3103           in history (for WHOWAS).  This is because SIGNOFF notify
3104           for these has been sent earlier already.  Affected file
3105           silcd/server.c.
3106
3107 Thu Jun 27 20:07:27 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3108
3109         * Buffer overflow with CUMODE command's mode->mode character
3110           conversion.  Reported by Ville Räsänen.  Affected file
3111           lib/silcutil/silcutil.c.
3112
3113 Thu Jun 27 16:54:33 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3114
3115         * Allow heartbeat packets to go disabled connections anyway.
3116           Affected files silcd/server.c and silcd/packet_send.c.
3117
3118         * Do not broadcast New Channel packets with List flag set
3119           in the packet to backup routers.  The router must check
3120           for the correctness of the packets before sending them.
3121           It is possible that router will have enforce Channel ID
3122           change and this would cause desync in the backup router.
3123           Affected file silcd/packet_receive.c.
3124
3125         * Remove SILC_PACKET_FLAG_LIST from the temp packets that
3126           are handled in list parsing.  They are not list packets
3127           anymore.  Affected file silcd/packet_receive.c.
3128
3129 Thu Jun 27 11:27:07 CEST 2002 Pekka Riikonen <priikone@silcnet.org>
3130
3131         * Stop waiting for backup router through the timeout, not
3132           directly after backup router has arrived.  Affected file
3133           silcd/server.c.
3134
3135         * Do not re-create channel keys and send them when removing
3136           clients in server shutdown.  Affected files are
3137           silcd/server_internal.h and silcd/server_util.c.
3138
3139         * Notify distribution to backup routers was missing from
3140           the silc_server_send_notify_dest function which caused
3141           desyncing problems with backup router.  Affected file is
3142           silcd/packet_send.c.
3143
3144         * The client's channel removing was working wrong on
3145           backup router.  It assumed that it doesn't know global
3146           information but backup router does know.  For this reason
3147           it could remove channel when it wasn't supposed to do that.
3148           Affected file silcd/server.c and silcd/server_util.c.
3149
3150 Wed Jun 26 15:14:12 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3151
3152         * Stop for a couple seconds after badkup router has become
3153           primary router.  Affected file silcd/server.c.
3154
3155         * Added silc_server_remove_servers_by_server, which is used
3156           to remove servers originated from some other server.  Also
3157           clients of those servers can be removed too.  Affected file
3158           silcd/server_util.[ch].
3159
3160         * When removing clients after a server has signed of remove
3161           also all servers behind that server (unless they are known
3162           to be available locally), and send SERVER_SIGNOFF for each
3163           of the server separately.  Also the signed off clients are
3164           sent now separately per signed off server.  The affected files
3165           are silcd/server.c and silcd/server_util.[ch].
3166
3167         * All servers added with silc_idlist_add_server must always
3168           have both "router" and "connection" pointers set.  Otherwise,
3169           bad server entries may be left around in the cache.
3170           Affected file silcd/command_reply.c.
3171
3172         * Do not create the channel key in NEW_CHANNEL packet
3173           processing if the channel is empty.  Affected file
3174           silcd/packet_receive.c.
3175
3176         * Completed backup router support for standalone routers.
3177           Supports also servers in the cell that do not use the backup
3178           at all.
3179
3180 Wed Jun 26 10:38:11 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3181
3182         * Fixed a bug in silc_string_regexify which did not add '^'
3183           at the start of each string, and thus the matching was
3184           not explicit.  For example ban list iikone@*!*@* would
3185           match also "priikone", which is wrong, it would have to be
3186           *iikone@*!*@* to match also "priikone".  Affected
3187           file lib/silcutil/unix/silcunixutil.c.
3188
3189 Tue Jun 25 18:47:39 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3190
3191         * Enable all local server connections before updating client
3192           caches when we've become backup router.  Otherwise, signoff
3193           packets may not reach the clients.  Affected files are
3194           silcd/server.c and silcd/server_util.[ch].
3195
3196         * Fixed a bug in version string parsing which could crash
3197           the program with specially formatted version string.
3198           Bug reported and patch provided by Ville Räsänen.  Affected
3199           file lib/silcutil/silcutil.c.
3200
3201         * Handle the disconnection immediately when DISCONNECT
3202           packet is received in server.  Affected file silcd/server.c.
3203
3204         * Primary router now waits a short time (10 seconds) for
3205           backup router connection before accepting any other
3206           connection (except local).  Affected file silcd/server.c,
3207           serverconfig.[ch].
3208
3209         * Fixed a crash in client libary in NICK_CHANGE notify when
3210           NICK_CHANGE arrived for client entry we are resolving
3211           currently.  Affected file lib/silcclient/client_notify.c.
3212
3213         * Call the sconn->callback completion even if error had
3214           occurred.  Start reconnecting always if connection to
3215           primary router fails during backup router protocol.
3216           Affected files silcd/server.c and server_backup.c.
3217
3218 Mon Jun 24 17:47:52 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3219
3220         * Added functions silc_server_send_opers and
3221           silc_server_send_opers_notify to send packets stricly
3222           to operators.  Added macro SILC_SERVER_SEND_OPERS macro
3223           to send variable argument notify to operators.
3224           Affected files silcd/packet_send.[ch] and silcd/server.h.
3225
3226         * Removed UMODE rights checking with UMODE_CHANGE notify.
3227           Affected file silcd/packet_receive.c.
3228
3229         * Server/router operator now receives notify when network
3230           switches to backup router and when it resumes the use of
3231           primary router.  Affected file silcd/server.c and
3232           silcd/server_backup.c.
3233
3234         * Fixed the updating of client information after backup
3235           resuming protocol is over; update all except local clients
3236           to the new primary router.  The affected file is
3237           silcd/server_util.c.
3238
3239         * Added support for closing active connections in rehash
3240           that were unconfigured by the user.  Supports currently
3241           closing server and router connections.  Affected file
3242           silcd/server.c.
3243
3244         * Rewrote some SILC_LOG_DEBUG's in silcd/server_backup.c.
3245
3246 Sun Jun 23 17:32:31 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3247
3248         * Don't do SILC_STRING_LANGUAGE encoding if the outbuffer
3249           is NULL since seems that on some platforms NULL is allowed
3250           and on some it's not.  Fallback encoding is used instead.
3251           Affected file lib/silcutil/silcstrutil.c.
3252
3253         * Fixed statistics updating for incoming server connection
3254           which could cause problems when re-connecting.  Affected
3255           file silcd/server.c.
3256
3257         * Preliminary backup router support for standalone router
3258           added.  Affected files in silcd/.
3259
3260         * Mark server connections in backup router disabled before
3261           and after backup protocol.  Affected file is
3262           silcd/server_backup.c.
3263
3264         * Added support for reconnecting to remote server connection
3265           even if the protocol fails, and if the configuration wants
3266           us to keep trying to connect anyway.
3267
3268           Server connection is not allowed to backup router if
3269           backup router does not have connection to primary router yet.
3270
3271           Affected file is silcd/server.c.
3272
3273 Sat Jun 22 21:34:59 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3274
3275         * Added silc_client_udpate_server function to update changed
3276           server info.  Affected file lib/silcclient/idlist.[ch].
3277
3278         * Added check for server entries that are being resolved when
3279           notify is received.  If being resolved, handle the received
3280           notify only after it's resolved so that all notifys are
3281           handled in same order as received from the server.
3282
3283           Added similar resolver check to channel entries.  Every
3284           notify that cause resolving of any information that affects
3285           channel entry marks the channel entry in waiting state.
3286           After whatever resolving is over the waiters are signalled
3287           and only then the notifys are handled in the same order
3288           as delivered from the server.
3289
3290           Affected files are lib/silcclient/idlist.[ch], and
3291           client_notify.c.
3292
3293         * Fixed KILLED notify handling in normal server.  Affected
3294           file silcd/packet_receive.c.
3295
3296         * Added SILC_IDLIST_STATUS_LOCAL which indicates that entry
3297           is locally connected, or was locally connected (but may
3298           be detached and connection is not active).  Added also
3299           SILC_IS_LOCAL for checking this status.  Affected files
3300           silcd/idlist.h, silcd/packet_receive.c, silcd/server_util.c,
3301           silcd/server.c and silcd/server_internal.h.
3302
3303 Sat Jun 22 17:06:58 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3304
3305         * Don't send or handle TOPIC_SET if topic is already set and
3306           is same as being set.  Affected files silcd/command.c and
3307           silcd/packet_receive.c.
3308
3309         * Fixed CMODE change rights checking to work correctly when
3310           removing modes by operator.  Affected file is
3311           silcd/server_util.c.
3312
3313         * Fixed some handling with New Channel packet in router and
3314           fixed some CMODE_CHANGE notify handling in server and router.
3315           Affected file is silcd/packet_receive.c.
3316
3317         * Changed "disconnect" client operation to include the
3318           reason of the disconnection and optional disconnection
3319           message.  Affected file lib/silcclient/silcclient.h.
3320
3321         * Made the compilation of lib/contrib/ stuff conditional.
3322           Affected files configure.in.pre, lib/contrib/Makefile.am.
3323
3324 Sat Jun 22 12:49:21 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3325
3326         * All CMODE_CHANGE and CUMODE_CHANGE notifys are now sent back
3327           to the sender of the notify too, to avoid situation where two
3328           notifys are in the network at the same time going to oppsite
3329           directions.  Affected file silcd/packet_receice.c.
3330
3331 Fri Jun 21 10:00:32 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3332
3333         * Delete the client from channel even if the cilent->id is
3334           NULL.  It was possible that client was deleted without
3335           removing from channels (theoretically at least).  Affected
3336           file silcd/server.c and silcd/server_util.c.
3337
3338         * Free the client data too when resuming is not successful.
3339           Affected file silcd/packet_receive.c.
3340
3341         * Merged some code from c0ffee's silc-plugin.  Affected files
3342           irssi/src/silc/core/silc-channels.c and silc-expandos.c.
3343
3344         * Added SILC_PRIMARY_ROUTE and SILC_BROADXAST macros to
3345           silcd/server_internal.h.  SILC_PRIMARY_ROUTE Returns pointer
3346           to the primary router connection, the other one returns
3347           TRUE if packet must be broadcasted to network.
3348
3349         * All notifys that are destined to primary router (to network)
3350           are now automatically sent to backup routers even if the
3351           router is standalone (and has backup router).  Affected files
3352           in silcd/.
3353
3354         * Added --without-irssi and --without-silcd configuration
3355           options for disabling the compilation of these applications.
3356           Affected file configure.in.pre and prepare.
3357
3358 Thu Jun 20 13:48:15 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3359
3360         * Implemented SILC_STRING_BMP and SILC_STRING_UNIVERSAL for
3361           UTF-8 encoding and decoding.  Added also new encodings
3362           SILC_STRING_BMP_LSB and SILC_STRING_UNIVERSAL_LSB.
3363
3364           Added also SILC_STRING_LANGUAGE which is language and charset
3365           specific encoder and decoer for those platforms that support
3366           iconv().  It can convert the UTF-8 to and from the locale
3367           specific character set.
3368
3369           Affected file lib/silcutil/silcstrutil.[ch].
3370
3371         * Added macro SILC_NOT_IMPLEMENTED to lib/silcutil/silclog.h.
3372
3373         * Added function silc_get_command_name to the file
3374           lib/silcutil/silcutil.[ch].
3375
3376         * Improved the server debug output a bit.  Affected files are
3377           in silcd/.
3378
3379 Wed Jun 19 17:46:31 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3380
3381         * Save the channel passphrase when received succesful JOIN
3382           command reply from router, on normal server.  Otherwise
3383           joinig +a channels from normal server is not possible.
3384           Affected file silcd/command.c.
3385
3386         * Fixed a bug in TOPIC_SET notify handling.  The notifier
3387           may be other than client too, like server or channel.
3388           It expected it to always be only client and ignored the
3389           notify.  Affected file silcd/packet_recieve.c.
3390
3391         * Removed some (unnecessary) debug printing from
3392           lib/silccore/silcid.c and lib/silccore/silcargument.c.
3393
3394         * Do not force CMODE_CHANGE when server is announcing new
3395           channel.
3396
3397           Router announces stuff only after server reannounces channel
3398           after CHANNEL_CHANGE notify.
3399
3400           These fixes optimizes the announcing procedure, and perhaps
3401           fixes some problems too.  Affected file silcd/packet_receive.c.
3402
3403         * Fixed SERVER_SIGNOFF sending to local clients.  It was
3404           totally broken and sent the notify to all local clients,
3405           instead of only to those that was on same channel as the
3406           signing off clients.  Affected file silcd/server_util.c.
3407
3408         * Added -D option to server.  It can be used to give debug
3409           level.  The levels are from 0 - 99, and are predefined for
3410           smooth server debugging.  (see silcd.c for the predefined
3411           levels).  Affected file silcd/server.c.
3412
3413 Wed Jun 19 16:01:51 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3414
3415         * Fixed a bug in Irssi SILC client to close the connection
3416           properly when disconnecting from server.  Affected file
3417           irssi/src/silc/core/client_ops.c.
3418
3419 Tue Jun 18 17:14:52 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3420
3421         * When authenticating as founder during JOIN command, check
3422           that the one authenticating becomes the only founder on the
3423           channel.  Affected file silcd/command.c.
3424
3425         * Better checking for founder mode setting when CUMODE_CHANGE
3426           notify is received.  Affected file silcd/packet_receive.c.
3427
3428         * Close all connections when shutting down the server by sending
3429           DISCONNECT packet.  Close all listeners too when shutting
3430           down the server.  Affected file silcd/server.c.
3431
3432         * Handle DISCONNECT packet correctly in client library by
3433           calling the "disconnect" client operation.  Affected file
3434           lib/silcclient/client.c.
3435
3436         * Handle local errors correctly during resuming.  Affected
3437           file lib/silcclient/client.c.
3438
3439 Tue Jun 18 10:26:27 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3440
3441         * The log file is not dupped internally anymore in
3442           lib/silcutil/silclog.c.  Fixed memory leaks too.
3443
3444         * The scheduler now dispatches all pending timeout tasks
3445           when it is uninitialized with silc_schedule_uninit.
3446           Affected file lib/silcutil/silcschedule.c.
3447
3448 Mon Jun 17 21:30:55 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3449
3450         * Added --enable-stack-trace option to configure.  Added
3451           memory allocation stack trace support.  Added files
3452           lib/silcutil/stacktrace.[ch].  Affected files are
3453           lib/silcutil/silcmemory.[ch].
3454
3455         * Fixed memory leaks from libraries and server.  Affected
3456           files around the tree.
3457
3458         * Reverted back a fix made to CUMODE which broke it.
3459           Affected file silcd/command.c.
3460
3461 Sun Jun 16 11:49:45 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3462
3463         * Added SILC_MESSAGE_FLAG_UTF8 to the protocol specs and the
3464           core library, and implemented it.  All textual messages SHOULD
3465           use this flag and the message MUST be UTF-8 encoded.
3466           All text messages sent by Irssi SILC client are now UTF-8
3467           encoded (regardless whether the terminal supports UTF-8 or not).
3468           Affected files are lib/silccore/silcchannel.h,
3469           irssi/src/silc/core/silc-servers.c, silc-channels.c and
3470           client_ops.c.
3471
3472 Sat Jun 15 18:23:39 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3473
3474         * Added lots of new statistics updating that was missing from
3475           the server and router code.  Affected files in silcd/.
3476
3477         * Sending SIGUSR1 signal to server now dumps the current
3478           server statistics into /tmp directory.  Affected file is
3479           silcd/silcd.c.
3480
3481         * ROBODoc documented the lib/silccrypt/silchash.h.  Improved
3482           the SILC Hash Interface also.  Added new functions
3483           silc_hash_get_name, silc_hash_init, silc_hash_update and
3484           silc_hash_final.  Affected file lib/silccrypt/silchash.c.
3485
3486 Sat Jun 15 12:09:14 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3487
3488         * Added some better info printing for client during connecting.
3489           Affected file silcd/server_util.c.
3490
3491         * Implemented the SILC_CHANNEL_UMODE_QUIET mode that can be used
3492           to silence a user on a channel.  Affected files are
3493           lib/silcclient/client_channel.c, irssi/src/silc/core/client_ops.c,
3494           irssi/src/fe-common/silc/module-formats.[ch], silcd/command.c
3495           and silcd/packet_receive.c.
3496
3497         * Fixed a fatal bug in handling of malformed command payload.
3498           Affected file silcd/command.c.
3499
3500         * Fixed a double free when announcing channel users to router.
3501           Affected file silcd/server.c.
3502
3503         * After successful authentication to channel founder mode, check
3504           that there isn't anyone else with founder mode on the channel.
3505           The one that authenticated will become founder and anyone
3506           else is demoted.  Affected file silcd/command.c.
3507
3508         * Added error printing of any error that has occurred during
3509           any command in client library.  Affected file is
3510           irssi/src/silc/core/client_ops.c.
3511
3512         * Removed some error printing from the client library and left
3513           it for the application to worry (from the error status it
3514           receives in 'command' client operation.  Affected file is
3515           lib/silcclient/command.c.
3516
3517 Fri Jun 14 22:59:02 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3518
3519         * Added new status types KEY_AGREEMENT_ALREADY_STARTED and
3520           KEY_AGREEMENT_SELF_DENIED to lib/silcclient/silcclient.h.
3521           Starting key agreement with itself is denied.  Affected file
3522           is lib/silcclient/client_keyagr.c.
3523
3524         * Fixed some error checkings from the SFTP library which caused
3525           misbehaviour.  Affected files are lib/silcsftp/sftp_client.c
3526           and lib/silcsftp/sftp_util.c.
3527
3528         * Added new "debug" and "debug_string" settings to Irssi SILC
3529           client which can be used to print runtime debugging on the
3530           Irssi's screen.  Available when compiled with --enable-debug
3531           option.  Affected file irssi/src/silc/core/silc-core.c.
3532
3533 Tue Jun 11 16:36:02 CEST 2002 Johnny Mnemonic <johnny@themnemonic.org>
3534
3535         * Fixed a missing variadic parameter in a function call that
3536           caused server crash when a non-allowed connection arrived.
3537           Reported by Richard Becker.  Affected file silcd/server.c.
3538
3539 Mon Jun 10 16:29:42 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3540
3541         * Added WATCH list sending to backup routers from router.
3542           The WATCH command is sent by the router to the backup
3543           router.  Affected file silcd/command.c.
3544
3545         * Mark the backup_router flag for RouterConnection entry
3546           if the backup router stuff is defined in the config file.
3547           Affected file silcd/serverconfig.c.
3548
3549         * Fixed some backup data sending around the code to work better
3550           if the router is standalone router.  Not all places were fixed.
3551           Affected file silcd/packet_receive.c, silcd/packet_send.c,
3552           silcd/server.c.
3553
3554         * Fixed the router connecting when connecting to multiple
3555           routers.  It ignored every other router except the first
3556           one.  Affected file silcd/server.c.
3557
3558 Mon Jun 10 09:28:21 CEST 2002 Pekka Riikonen <priikone@silcnet.org>
3559
3560         * Made the private key generation after expiration optional.
3561           If not created after expiration the old key will re-expire
3562           at a later time (and thus key pair is not necessary to
3563           change).  Affected file irssi/src/silc/core/clientutil.c.
3564
3565 Sun Jun  9 18:58:25 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3566
3567         * The length arguments in bind() and connect() were wrong
3568           and fixed now to used SIZEOF_SOCKADDR in the
3569           lib/silcutil/unix/silcunixutil.c.
3570
3571 Tue Jun  4 18:36:05 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3572
3573         * Fixed detach timeout handling to use Client ID and not
3574           the actual client entry which may be freed in the callback.
3575           Affected file silcd/command.c.
3576
3577 Thu May 30 15:53:45 CEST 2002 Pekka Riikonen <priikone@silcnet.org>
3578
3579         * Merged c0ffee's multiple interface support patch.
3580           Affected files in silcd/.
3581
3582 Wed May 29 18:08:15 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3583
3584         * Cleanup keys properly.  Affected file is
3585           irssi/src/silc/core/clientutil.c.
3586
3587 Tue May 28 20:11:41 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3588
3589         * Display the user mode on the status bar.  Affected file
3590           irssi/src/silc/core/silc-expandos.c.
3591
3592 Tue May 28 13:56:26 CEST 2002 Pekka Riikonen <priikone@silcnet.org>
3593
3594         * If private message key is not set, but the flag is set in
3595           the packet, ignore the packet since it cannot be decrypted.
3596           Affected file lib/silcclient/client_prvmsg.c.
3597
3598 Thu May 23 12:00:14 CEST 2002 Pekka Riikonen <priikone@silcnet.org>
3599
3600         * When resuming client, remove the old client entry from
3601           the watcher list too.  Affected file silcd/packet_receive.c.
3602
3603         * Do not allow normal server to force founder mode away
3604           from router if the founder mode is already set.  Affected
3605           file silcd/packet_receive.c.
3606
3607         * Remove the client entry with watch notify types with short
3608           timeout, and not directly, so that other notifys can be
3609           retrieved too.  Affected file lib/silcclient/client_notify.c.
3610
3611         * Display notification about data messages that cannot be
3612           displayed.  Affected files irssi/src/silc/core/client_ops.c,
3613           irssi/src/fe-common/silc/module-formats.[ch].
3614
3615 Sun May 19 18:59:00 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3616
3617         * Fixed the CHANNEL_CHANGE notify handling in client libary
3618           to not use freed memory.  Affected file is
3619           lib/silcclient/client_notify.c.
3620
3621         * Fixed CUMODE_CHANGE notify handling in server.  Affected
3622           file silcd/packet_receive.c.
3623
3624         * Fixed USERS command to support empty channels.  Affected
3625           file silcd/command.c.
3626
3627 Sat May 18 11:35:19 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3628
3629         * Allow multiple identical pending commands to be registered
3630           in client library.  Affected file is lib/silcclient/command.c.
3631
3632         * Call the completion for resolving client information only
3633           after all resolvers has finished.  This fixes a crash in
3634           the client.  Added support for checking when the resolvers
3635           are finished.  Affected file is lib/silcclient/idlist.c.
3636
3637         * Wait by default 3 seconds before reconnecting to the server
3638           after being disconnected.  Makes the /detach command a bit
3639           more usable.
3640
3641 Fri May 17 17:23:45 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3642
3643         * Check the watcher list before sending signoff notifys
3644           when closing client connection.  Affected file is
3645           silcd/server.c.
3646
3647         * Added better CMODE command rights checking.  Affected file
3648           silcd/server_util.c.
3649
3650 Fri May 17 08:33:41 CEST 2002 Pekka Riikonen <priikone@silcnet.org>
3651
3652         * Fixed watcher list checking during server signoff.  It
3653           crashed the server.  Affected file silcd/server_util.c.
3654
3655         * The JOIN command reply returns now the founder's public
3656           key.  Affected file is silcd/command.c.
3657
3658         * Announce the channel mode, and the mode properties with
3659           CMODE_CHANGE notify.  Affected file silcd/server.c.
3660
3661         * Mark new channels by default disabled, untill at least
3662           one user joins the channel.  Affected file is
3663           silcd/packet_receive.c.
3664
3665 Thu May 16 13:05:13 CEST 2002 Pekka Riikonen <priikone@silcnet.org>
3666
3667         * The nickname argument to watch notify can be optional.
3668           Fixes a crash in server.  Affected file silcd/packet_send.c.
3669
3670         * Remove the client entry from cache if the WATCH notify type
3671           is KILLED, SERVER_SIGNOFF or SIGNOFF.  Affected file is
3672           lib/silcclient/client_notify.c.
3673
3674         * Check the watcher list before and after changing nickname
3675           when the NICK_CHANGE notify is received.  Affected file is
3676           silcd/idlist.c.
3677
3678         * Fixed a crash in OPER and SILCOPER command sending.  Empty
3679           passphrase caused the crash.  Affected file is
3680           lib/silcclient/command.c.
3681
3682 Wed May 15 19:01:42 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3683
3684         * Merged with Irssi CVS for Irssi SILC client.
3685
3686 Tue May 14 19:37:48 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3687
3688         * Completed the protocol specifications.
3689
3690 Tue May  7 20:41:58 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3691
3692         * Merged with Irssi CVS for Irssi SILC client.
3693
3694 Tue May  7 11:07:16 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3695
3696         * Added the founder's public key delivery to the
3697           CUMODE_CHANGE notify type as well.  Updated the protocol
3698           specs and the code.  Affected files are silcd/packet_send.[ch],
3699           silcd/packet_receive.c and silcd/command.c.
3700
3701 Mon May  6 19:46:12 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3702
3703         * Added silc_pkcs_public_key_copy function into the
3704           lib/silccrypt/silcpkcs.[ch].
3705
3706         * Remove the `iv' from the SilcChannelEntry since we can
3707           live without it.  Affected files are silcd/idlist.h and
3708           silcd/packet_receive.c.
3709
3710         * Added support for sending the founder's public key in
3711           the CMODE_CHANGE notify packet in the server.  Affected
3712           files are silcd/packet_send.[ch], silcd/packet_receive.c,
3713           silcd/command.c and silcd/server.c.
3714
3715         * Changed the FOUNDER_AUTH authentication to use only
3716           public key authentication as defined by new protocol
3717           specs.  Passphrase authentication with that mode cannot
3718           be used anymore.  It is now possible to reclaim founder
3719           mode from any server in the network.  Affected files are
3720           silcd/command.c, silcd/idlist.h and silcd/command_reply.c.
3721
3722         * Added permanent channels support by making the channel
3723           permanent when FOUNDER_AUTH mode is set on the channel.
3724           The channel will not be destroyed even if channel is empty
3725           when that mode is set.  Protocol TODO #17.  Affected
3726           files are silcd/server.[ch], server_util.[ch],
3727           silcd/command.c, silcd/packet_receive.c and
3728           lib/silcclient/command.c.
3729
3730 Fri May  3 18:36:51 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3731
3732         * Added reference counter to the command reply context in
3733           the client library.  Affected files are
3734           lib/silcclient/command_reply.[ch].
3735
3736 Fri May  3 11:37:10 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3737
3738         * Fixed rekey protocol with PFS in the client library.
3739           Affected file is lib/silcclient/protocol.c.
3740
3741         * Added support for list of errors in client library
3742           command reply handling.  Affected file is
3743           lib/silcclient/command_reply.c.
3744
3745         * Defined that the WHOIS and IDENTIFY commands can send
3746           list of errors.  Updated the protocol specs.  Protocol
3747           TODO #2.
3748
3749         * Added support for sending list of errors to WHOIS and
3750           IDENTIFY commands in server.  Added support for receiving
3751           list of errors in server.  Affected files are
3752           silcd/command.c and silcd/command_reply.c.
3753
3754         * Fixed client info resolving on LEAVE command in client
3755           library to not crash.  Affected file is
3756           lib/silcclient/client_notify.c.
3757
3758 Thu May  2 08:45:11 CEST 2002 Pekka Riikonen <priikone@silcnet.org>
3759
3760         * Defined that the NICK command replies with thew changed
3761           nickname too, to make the nickname changing simpler at
3762           the client's end.  Updated protocol specs and the code
3763           in client and server.  Affected files are
3764           silcd/command.c, lib/silcclient/command_reply.c and
3765           lib/silcclient/command.c.
3766
3767 Mon Apr 29 20:10:42 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3768
3769         * Added `Compressed' packet flag to indicate that the packet
3770           payload is compressed by the sender.  Updated the protocol
3771           specs and the core library.  The compression still is not
3772           implemented in the sources.  Affected file is
3773           lib/silccore/silcpacket.h.
3774
3775 Mon Apr 29 09:48:12 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
3776
3777         * Remove pending command callbacks also if the connection
3778           to the server is destroyed.  Affected file is
3779           lib/silcclient/client.c.
3780
3781 Sat Apr 27 19:52:32 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3782
3783         * Added new QUIET channel user mode that can be used to
3784           quiet a user in a channel.  Updated the protocol specs but
3785           it wasn't implemented yet.  Protocol TODO #27.  Affected
3786           file is lib/silccore/silcmode.h.
3787
3788 Mon Apr 22 09:09:44 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
3789
3790         * Added BLOCK_INVITE user mode to be able to block incoming
3791           invite notifications.  Protoocol TODO #26.  Affected files
3792           are lib/silccore/silcmode.h, lib/silcclient/command.c and
3793           silcd/command.c.
3794
3795         * SILC Publickey fields MUST be UTF-8 encoded now.  Updated
3796           the protocol specs and the code.  Affected file is
3797           lib/silccrypt/silcpkcs.c.
3798
3799 Sun Apr 21 19:44:38 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3800
3801         * Disconnect Payload includes now the status type.  Updated
3802           the protocol specs and the code.  Protocol TODO #25.
3803           Affected files are silcd/server.c, lib/silcclient/client.c.
3804
3805         * Added NOT_AUTHENTICATED, BAD_SERVER_ID, INCOMPLETE_INFORMATION,
3806           KEY_EXCHANGE_FAILED and BAD_VERSION error status types.
3807           Moved the silc_client_command_status_messages table to the
3808           lib/silcutil/silcutil.c and added new funtion
3809           silc_get_status_message, which deprecates function
3810           silc_client_status_message.  Affected files are
3811           lib/silccore/silcstatus.h, lib/silcclient/command_reply.[ch],
3812           lib/silcutil/silcutil.[ch].
3813
3814 Fri Apr 19 17:35:15 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3815
3816         * Defined that the nickname hash in Client ID MUST be from
3817           lowercase nickname.  This effectively changes nicknames in
3818           SILC to case-insensitive.  Updated the protocol specs and
3819           the code.  Affected files are lib/silcutil/silcutil.[ch],
3820           silcd/serverid.c, and silcd/idlist.c.
3821
3822         * Added new channel user modes BLOCK_MESSAGES_USERS and
3823           BLOCK_MESSAGES_ROBOTS.  Updated the protocol specs and the
3824           code.  Affected files are lib/silccore/silcmode.h,
3825           lib/silcclient/command.c, and silcd/packet_send.c.
3826
3827         * Added new error status ERR_RESOURCE_LIMIT.  Updated protocol
3828           specs and code.  Affected file lib/silccore/silcstatus.h.
3829
3830         * Added support for watch list.  It is possible to add nicknames
3831           to be watched, and when they come to network, leave network
3832           or user mode changes the watcher will be notified of this
3833           change.  Added SILC_COMMAND_WATCH command, added new
3834           notify type SILC_NOTIFY_TYPE_WATCH to deliver the watch
3835           notifications.  Updated the protocol specs and implemented
3836           this to library, client and server.  Protocol TODO #21.
3837           Affected files are lib/silccore/silccomand.h,
3838           lib/silccore/silcnotify.h, lib/silcclient/command[_reply].[ch],
3839           silcd/command[_reply].[ch], lib/silcclient/client_notify.c,
3840           silcd/packet_send.[ch], silcd/packet_receive.c, and
3841           irssi/src/silc/core/client_ops.c.
3842
3843         * Added user mode SILC_UMODE_REJECT_WATCHING to reject
3844           somebody watching you.  Updated the protocol specs and the
3845           code.  Affected files are lib/silccore/silcmode.h, and
3846           lib/silcclient/command.c.
3847
3848 Fri Apr 19 09:02:20 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
3849
3850         * Added service support to SILC protocol.  Added new command
3851           SILC_COMMAND_SERVICE.  Updated the protocol specs and the
3852           core library.  Services are not implemented in server or
3853           client for now.  Protocol TODO #20.  Affected files are
3854           lib/silccore/silcstatus.h, lib/silccore/silccommand.h.
3855
3856         * Added SilcStatus argument to `command' client operation
3857           to return the error status when command sending fails
3858           locally.  Changed all command in client library to return
3859           correct command status.  Affected files are
3860           lib/silcclient/command.c, lib/silcclient/silcclient.h and
3861           irssi/src/silc/core/client_ops.c.
3862
3863 Thu Apr 18 14:09:51 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
3864
3865         * Added silc_mime_parse function to parse MIME headers.
3866           Affected files are lib/silcutil/silcstruti.[ch].
3867
3868         * Added MIME header parsing in Irssi SILC Client.  It displays
3869           all textual MIME objects, others it ignores.  Affected file
3870           is irssi/src/silc/core/clien_ops.c.
3871
3872 Wed Apr 17 22:07:59 CEST 2002  Johnny Mnemonic <johnny@themnemonic.org>
3873
3874         * Fixed a bug in the pid writing function, which couldn't be
3875           written in a root-owned directory.
3876
3877 Tue Apr 16 09:34:40 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3878
3879         * Defined that channel message to unknown Channel ID must
3880           cause SILC_NOTIFY_TYPE_ERROR notify message to the sender.
3881           Updated the protocol specs and the code in server.  The
3882           affected file is silcd/packet_receive.c.
3883
3884 Mon Apr 15 19:57:57 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3885
3886         * Added new notify type SILC_NOTIFY_TYPE_ERROR and specified
3887           that it is used to send error notifys if error occurs during
3888           some SILC packet processing, except commands.  The error
3889           types are same as for command reply types.  Defined that
3890           if private message is sent to unknown Client ID the error
3891           is sent in SILC_NOTIFY_TYPE_ERROR instead of command reply.
3892           Updated the protocol specs and code.  Affected files are
3893           lib/silccore/silcnotify.h, added lib/silccore/silcstatus.h,
3894           lib/silcclient/client_notify.c, silcd/packet_receive.c,
3895           and irssi/src/silc/core/client_ops.c.  Renamed the
3896           SilcCommandStatus to SilcStatus.
3897
3898         * Defined the use of extra WHOIS attributes in WHOIS command.
3899           The <Requested Attributes> (defined in a separate document)
3900           can be used to request additional information about user
3901           not returned by standard WHOIS command.  Defined that server
3902           can send WHOIS command directly to client.  Client provides
3903           the requested attributes to the server.  Updated the protocol
3904           specs.  Protocol TODO #4.  Implementation is not done yet
3905           (Protocol TODO #24).
3906
3907         * Renamed function silc_client_command_status_message to
3908           silc_client_status_message.  Affected files are
3909           lib/silcclient/command_reply.[ch].
3910
3911 Sun Apr 14 21:13:42 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3912
3913         * Changed the WHOIS, IDENTIFY and WHOWAS count arguments to
3914           32 bit integers.  Updated the protcol specs and the code.
3915           Affected files are silcd/command.c and
3916           lib/silcclient/command.c.
3917
3918 Sun Apr 14 19:49:02 CEST 2002  Johnny Mnemonic <johnny@themnemonic.org>
3919
3920         * Fixed a bug in library where sending a bogus authentication
3921           payload would lead to a crash.  Affected file is
3922           lib/silccore/silcauth.c.
3923
3924 Sat Apr 13 13:09:24 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3925
3926         * Added detach_disabled and detach_timeout server config
3927           options to the server.  Affected files silcd/serverconfig.[ch],
3928           silcd/command.c and silcd/packet_receive.c.
3929
3930 Fri Apr 12 20:09:08 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3931
3932         * Added resolve_cmd_ident field to the SilcClientEntry structure
3933           too so that if the entry is for example being resolved so
3934           another command may attach to the same pending command reply
3935           without requiring to resolve the same entry again.  Added
3936           support for adding multiple pending commands for one
3937           command idenfier.  Affected files lib/silcclient/command.[ch],
3938           lib/silcclient/command_reply.[ch], lib/silcclient/idlist.h.
3939
3940 Fri Apr 12 10:17:51 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3941
3942         * Defined that server receives WHOIS command reply for private
3943           and secret channels too.  Updated protocol specs and the
3944           code in server.  Affected file silcd/command.c.
3945
3946         * Defined <channel user mode list> argument to WHOIS command
3947           reply for returning user modes on the channels.  The
3948           channel list now doesn't include the user mode anymore but the
3949           actual channel mode.  Updated protocol specs and the code in
3950           client and server.  Affected files are silcd/command_reply.c,
3951           silcd/command.c, silcd/server.c, irssi/src/silc/core/client_ops.c,
3952           and lib/silcclient/command_reply.c.
3953
3954         * Save the channels list in WHOIS command reply in normal server
3955           so that WHOIS always shows joined channels also in normal
3956           server and not just on router.  Affected file is
3957           silcd/command_reply.c.
3958
3959 Thu Apr 11 22:29:33 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3960
3961         * Defined that server receives USERS command reply for private
3962           and secret channels too.  Updated protocol specs and the
3963           code in server.  Affected file silcd/command.c.
3964
3965 Thu Apr 11 16:32:08 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3966
3967         * Changed the UMODE's mode mask argument to be optional.  If
3968           not provided then the command merely returns the current mode
3969           mask to the client.  Updated protocol specs and the server.
3970           Affected file is silcd/command.c.
3971
3972         * Added SILC session detachment/resuming support.  It is possible
3973           to detach by closing the network connection and then re-connect
3974           and resume to the old client session.  Added DETACHED user
3975           mode that server will set for detached client.  Added new
3976           packet RESUME_CLIENT which is used to perform the resuming
3977           process.  Added DETACH command.  Updated the protocol specs,
3978           core library, client and server.  Protocol TODO #22.  Very
3979           many affected files around the tree.
3980
3981 Wed Apr 10 16:32:01 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3982
3983         * Changed the CMODE's mode mask argument to be optional.  If
3984           not provided then the command merely returns the current mode
3985           mask to the client.  Updated protocol specs and the server.
3986           Affected file is silcd/command.c.
3987
3988         * Changed the Killer's Client ID in KILLED notify to be just
3989           any ID payload since router server is allowed to kill as well.
3990           Updated protocol specs, client libary and server.  Affected
3991           files are lib/silcclient/client_notify.c, silcd/packet_receive.c,
3992           and irssi/src/silc/core/client_ops.c.
3993
3994 Tue Apr  9 17:15:42 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3995
3996         * Added new user modes ANONYMOUS for special anonymous servers
3997           that may set the mode for client, and BLOCK_PRIVMSG which
3998           client may set to block incoming private messages unless the
3999           Private Message Key flag is set (using private keys to protect
4000           private messages).  Updated protocol specs and code in client
4001           and server and core library.  Protocol TODO #23.  Affected
4002           files are lib/silccore/silcmode.h, silcd/server.[ch],
4003           irssi/src/silc/core/client_ops.c, silcd/packet_receive.c,
4004           irssi/docs/help/in/umode.in, lib/silcclient/command.c.
4005
4006         * Added new channel user mode BLOCK_MESSAGES which the client
4007           may set to itself to tell server not send channel messages.
4008           Other packets such as channel key packets are still sent.
4009           Protocol TODO #23.  Updated the protocol specs, client and
4010           server.  Affected files are lib/silccore/silcmode.h,
4011           irssi/docs/help/in/cumode.in, lib/silcclient/command.c,
4012           lib/silcutil/silcutil.c, silcd/command.c, and
4013           silcd/packet_send.c.
4014
4015 Mon Apr  8 23:57:32 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
4016
4017         * Redefined the Status Payload to include now two 8 bit fields,
4018           instead of one 16 bit field.  This now makes it possible to
4019           send list of errors.  Updated the protocol specs and the code
4020           in core library, client library and server.  Protocol TODO #1.
4021           Affected files are lib/silccore/silccommand.[ch],
4022           lib/silcclient/command_reply.[ch], silcd/command.c,
4023           silcd/command_reply.c and silcd/packet_receive.[ch].
4024
4025 Mon Apr  8 19:57:40 CEST 2002  Johnny Mnemonic <johnny@themnemonic.org>
4026
4027         * Added config parse status SILC_CONFIG_EPRINTLINE, this status
4028           must be handled by the application and should tell the application
4029           that an error message was already printed, and it should print the
4030           config coords (line, filename, ...).  Affected files are
4031           silcd/serverconfig.c, lib/silcutil/silcconfig.[ch].
4032
4033         * Added local macro SILC_SERVER_CONFIG_ALLOCTMP to make the
4034           server config parsing code more readable.
4035
4036           Fixed a bug in the fetch_logging() config callback.
4037
4038           Affected files is silcd/serverconfig.c.
4039
4040         * Drop root privileges when started in foreground.  Don't drop them
4041           if debugging also.  Affected file is silcd/silcd.c.
4042
4043 Mon Apr  8 17:00:41 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
4044
4045         * Added more IM-like features by introducing new user modes
4046           for setting various presence information.  Added new modes:
4047           INDISPOSED, BUSY, PAGE, HYPER and ROBOT.  Updated protocol
4048           specs and code.  Protocol TODO #19. Affected files are
4049           lib/silccore/silcmode.h, irssi/src/silc/core/client_ops.c,
4050           irssi/docs/help/in/umode.in and lib/silcclient/command.c.
4051
4052 Sun Apr  7 17:07:59 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
4053
4054         * Added STATS command to the protocol after all, to return
4055           various statistical information about the network.  It can
4056           be used by clients to retrieve statistical information, and
4057           servers may use it to to fetch cell and network wide
4058           statistics from router.  Updated the protocol specs and
4059           implemented it to the server.  Protocol TODO #16.
4060           Affected files are lib/silccore/silccommand, silcd/command.[ch],
4061           silcd/command_reply.[ch].
4062
4063 Sat Apr  6 17:08:58 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
4064
4065         * The LIST command reply in client libary now adds new channel
4066           entry if the returned channel doesn't exist yet in cache,
4067           and returns the channel entry to the application in the
4068           command_reply client operation.  Affected file is
4069           lib/silcclient/command_reply.c.
4070
4071         * Changed the channel message payload's MAC generation to
4072           include the IV in the MAC as well.  This way all relevant
4073           parts of the channel message payload are authenticated also
4074           with the channel message MAC (and not only by packet MAC).
4075           Causes incompatibility with 1.0 protocol.  Protocol TODO #7.
4076           Affected file is lib/silccore/silcchannel.c.
4077
4078         * Fixed the SKE to save the remote version, since the
4079           silc_ske_parse_version mistakenly checked wrong version,
4080           after it replaced the start payload.  Affected files are
4081           lib/silcske/silcske.[ch].
4082
4083 Fri Apr  5 16:03:03 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
4084
4085         * Splitted lib/silcutil/silcutil.h into silcstrutil.h for
4086           string utility functions.  Added there also new functions
4087           silc_utf8_[encode/decode/valid] for UTF-8 string encoding.
4088           Affected files lib/silcutil/silcstrutil.[ch].
4089
4090         * Renamed silc_*_pem functions to silc_pem_* functions.  Affected
4091           files are lib/silcutil/silcstrutil.[ch].
4092
4093         * Defined that the security property fields in SKE SHOULD be
4094           UTF-8 encoded, defined that version string MUST be US-ASCII
4095           encoded, defined that passphrases sent in connection
4096           authentication protocol MUST be UTF-8 encoded.  Implemented
4097           these to the client and server.  Defined also that other
4098           passphrases sent in the protocol MUST be UTF-8 encoded.
4099           Affected files are lib/silcske/silcske.c,
4100           lib/silcclient/protocol.c, silcd/protocol.c,
4101           silcd/serverconfig.c, and lib/silccore/silcauth.c.
4102
4103         * Changed the silc_client_close_connection interface to not
4104           need the SilcSocketConnection which should not be visible
4105           to application.  Affected files are lib/silcclient/client.c
4106           and lib/silcclient/silcclient.h.
4107
4108         * Rewrote the text for Private Message Key Payload in the
4109           protocol specification.  Protocol TODO #11.
4110
4111 Wed Apr  3 16:24:51 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
4112
4113         * Upgraded the protocol version to 1.1, updated protocol specs
4114           and software.
4115
4116         * Added the nickname as new argument to NICK_CHANGE notify and
4117           added it to protocol specs and implemented it to client and
4118           server.  Protocol TODO #3.  Affected files are silcd/idlist.[ch],
4119           silcd/command.c, silcd/packet_receive.c, packet_send.[ch], and
4120           lib/silcclient/client_notify.c.
4121
4122         * Added the killer's client ID to the KILLED notify and added
4123           it to protocol specs and implemented it to client and server.
4124           Protocol TODO #13.  Affected files are silcd/command.c,
4125           silcd/packet_receive.c, packet_send.[ch],
4126           lib/silcclient/client_notify.c, irssi/src/silc/core/client_ops.c.
4127           The killer's client entry is now returned to application in
4128           the `notify' client operation.
4129
4130         * Fixed the Max Argument fields that had too large value set
4131           in the protocol specs.  Protocol TODO #14.
4132
4133         * Added the LEAVE command reply to return the ID of parted
4134           channel.  Updated protocol specs and implemented it to the
4135           client and server.  Protocol TODO #15.  Affected files are
4136           silcd/command.c, lib/silcclient/command_reply.c.  The channel
4137           entry is now returned to application in the `command_reply'
4138           client operation.
4139
4140         * Rewrote the version SKE version checking in client libary
4141           and in server to use the silc_parse_version_string.  Affected
4142           files are lib/silcclient/protocol.c, silcd/protocol.c.
4143
4144         * Added SILC_STATUS_ERR_NO_CHANNEL_FOPRIV error status to few
4145           commands that was missing it, and updated protocol specs and
4146           the server implementation.  Protocol TODO #10.  The affected
4147           file is silcd/command.c.
4148
4149         * Defined new message flags SILC_MESSAGE_FLAG_REPLY to be
4150           generic reply to a generic request (REQUEST flag), and
4151           SILC_MESSAGE_FLAG_DATA to send any kind of data in a generic
4152           way.  A draft-riikonen-silc-flags-payloads-00.txt is written
4153           to define the payload for DATA flag.  Added the flags to
4154           the implementation.  Protocol TODO #9.  Affected file is
4155           lib/silccore/silcchannel.h.
4156
4157           Changed the client library to return the message length
4158           to application as well in the channel_message and private_message
4159           client operations.  Affected files are
4160           lib/silcclient/client_prvmsg, lib/silcclient/client_channel.c,
4161           lib/silcclient/silcclient.h, irssi/src/silc/core/client_ops.c,
4162           and lib/silcclient/client_ops_example.c.
4163
4164         * Added two new channel modes: SILC_CMODE_SILENCE_USERS
4165           and SILC_CMODE_SILENCE_OPERS which can be used to moderate
4166           the channel.  Updated protocol specs and impelemented this
4167           to client and server.  Protocol TODO #6.  Affected files are
4168           silcd/packet_receive.c, server_util.c, lib/silcclient/command.c,
4169           lib/silcclient/client_channel.c, lib/silccore/silcmode.h.
4170
4171           Added new options m and M to CMODE command in Irssi SILC
4172           client to set these modes.
4173
4174         * Deprecated all administrative commands from SILC protocol
4175           since they are highly implementation specific commands.
4176           Updated protocol specs.  Moved the old commands in
4177           implementations to private range of command types.  Affected
4178           files are silcd/command.c, lib/silcclient/command.c and
4179           lib/silcclient/command_reply.c.  Protocol TODO #8.
4180
4181         * Fixed a bug in server where sending unknown command crashes
4182           the server.  Affected file silcd/command.c.
4183
4184 Wed Apr  3 09:57:47 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
4185
4186         * Added SILC_PROTOCOLVERSION macro to check protocol version
4187           of a socket connection.  The affected file is
4188           lib/silcutil/silcsockconn.h.
4189
4190         * Added better error logging in rekey protocol.  Affected file
4191           silcd/protocol.c.
4192
4193         * Do not check public key types in SKE during rekey.  Affected
4194           file lib/silcske/payload.c.
4195
4196         * Fixed the rekey protocol with PFS, which was totally broken.
4197           Affected file silcd/protocol.c.
4198
4199 Tue Apr  2 14:55:06 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
4200
4201         * Some client implementations quit network by doing first LEAVE
4202           and then immediately SIGNOFF (like Bombyx).  We now do check
4203           after a short time after LEAVE notify and check whether the
4204           client is still valid after LEAVE, and if not we remove it from
4205           cache.  Affected file is lib/silcclient/client_notify.c.
4206
4207 Tue Apr  2 13:39:04 CEST 2002  Johnny Mnemonic <johnny@themnemonic.org>
4208
4209         * Merged version 1.1.4 of zlib. Even if it not currently in use,
4210           it's good not to have security holes here.
4211
4212         * Fixed a negative refcount situtuation for the config context.
4213           Affected file is silcd/serverconfig.c.
4214
4215 Mon Apr  1 20:15:10 CEST 2002  Johnny Mnemonic <johnny@themnemonic.org>
4216
4217         * ROBOdoc documented lib/silcutil/silcutil.h.
4218
4219 Sat Mar 30 21:06:45 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4220
4221         * Optimized even more the SilcPacketContext structure.  Now
4222           totally saved 16 bytes of memory per context after optimization.
4223           Affected files are lib/silccore/silcpacket.[ch].
4224
4225         * Made strict checks for valid SILC IDs.  Affected file is
4226           lib/silccore/silcid.c.
4227
4228 Sat Mar 30 18:15:55 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4229
4230         * Changed the object argument for silc_cipher_register,
4231           silc_hash_register, silc_hmac_register and silc_pkcs_register
4232           to const.  Affected files are lib/silccrypt/silccipher.[ch],
4233           silchash.[ch], silchmac.[ch] and silcpkcs.[ch].
4234
4235         * Changed the silc_get_username and silc_get_real_name to
4236           never fail.  Affected file lib/silcutil/unix/silcunixutil.c.
4237
4238         * Fixed the Irssi SILC Client to use the silc_get_username and
4239           silc_get_real_name insted of glib routines since the glib
4240           routines only corrupt stack.  Fixes the Irssi SILC to work in
4241           Cygwin.  Affected file irssi/src/silc/core/silc-core.c.
4242
4243         * Fixed the Irssi to not use g_get_home_dir since it crashes
4244           or returns garbage on cygwin and corrupts stack.  Added function
4245           get_home_dir to Irssi routines.  Affected files are
4246           irssi/src/core/misc.[ch] and irssi/src/core/core.c.
4247
4248 Fri Mar 29 21:55:41 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4249
4250         * Made some structure optimizations.  SFTP memory FS MemFSEntry
4251           entry structure.  Optimized SilcTask structure.  Optimized
4252           SilcPacketContext structure.
4253
4254           Affected files lib/silcsftp/sftp_fs_memory.c,
4255           lib/silcutil/silcschedule.c, lib/silccore/silcpacket.h.
4256
4257 Fri Mar 29 10:41:07 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4258
4259         * And yet again reverted back the config thing since Johnny
4260           screwed it up.  Affected file silcd/serverconfig.[ch], server.c,
4261           and silcd.c.
4262
4263         * Fixed memory leaks from config object.  Affected files are
4264           silcd/serverconfig.[ch].
4265
4266         * Added support for adding new connections to the server in rehash.
4267           After rehash they take effect.
4268
4269           Added support for changing the maximum allowed connections in
4270           rehash.  The number can grow but going smaller is not supported.
4271
4272           Added function silc_server_num_sockets_by_remote to the
4273           silcd/server_util.[ch].
4274
4275           Affected files are silcd/server.c, and silcd/serverconfig.[ch].
4276
4277 Fri Mar 29 03:26:12 CET 2002 Johnny Mnemonic <johnny@themnemonic.org>
4278
4279         * Added preliminary checking during config parsing for a valid
4280           public/private key and removed further checks in the code.
4281           Affected files are silcd/serverconfig.[ch], server.c.
4282
4283         * Moved functions silc_server_drop() and silc_server_daemonise()
4284           from server.c to silcd.c since they are stricly related to
4285           the application activity.
4286
4287         * Reverted a small part of the automatic ref/unref since
4288           it caused a double unref in some situations.  Affected
4289           files are silcd/silcd.[ch], server.c, serverconfig.c.
4290
4291         * Added some .cvsignore files in the lib directory.
4292
4293 Thu Mar 28 22:51:15 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4294
4295         * Fixed silc_net_gethostbyaddr to correctly resolve by
4296           address.  Affected file lib/silcutil/silcnet.c.
4297
4298         * Fixed the notify relaying to client.  The HMAC to be used
4299           with relayed packets ws wrong and caused decryption failure
4300           at the client end.  Affected file is silcd/packet_receive.c.
4301
4302 Thu Mar 28 19:02:05 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4303
4304         * Created new branch silc_protocol_1_0_branch.
4305
4306         * Reverted the silc_log_quick change in lib/silcutil/silclog.c.
4307
4308         * Changed the silc_server_config_* routines to be SilcServer
4309           independent.  They are now officially application specific code
4310           and not part of generic server implementation.  Affected files
4311           are silcd/serverconfig.[ch], silcd/silcd.c, silcd/server.c.
4312
4313 Thu Mar 28 17:01:43 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4314
4315         * Added automatic referencing of config context in the
4316           silc_server_config_alloc, and automatic unreferencing in the
4317           silc_server_config_destroy.  Affected files are
4318           silcd/serverconfig.[ch], silcd/silcd.c.
4319
4320         * Fixed the silc_log_quick handling in the logging routines.
4321           It didn't log quickly when it was TRUE.  Affected file is
4322           lib/silcutil/silclog.c.  Also the flush delay was set even
4323           if it was 0 in config file.  Affected file is
4324           silcd/serverconfig.c.
4325
4326         * Added support for changing key pair of the server in rehash.
4327           Affected file silcd/server.c.
4328
4329 Thu Mar 28 12:17:21 CET 2002  Pekka Riikonen <priikone@silcnet.org>
4330
4331         * Fixed the TOPIC_SET notify to not cras.  It changed the topic
4332           too early, before getting the channel entry.  Affected file
4333           is silcd/packet_receive.c.
4334
4335 Thu Mar 28 09:58:16 CET 2002  Johnny Mnemonic <johnny@themnemonic.org>
4336
4337         * Added functions silc_server_config_[ref/unref], these are used
4338           to prevent that the config object is destroyed.
4339
4340           No longer directly affect global variables silc_log_quick and
4341           silc_log_delay, they are first cached inside the config object
4342           and then applied with silc_server_config_setlogfiles().
4343
4344           silc_server_config_set_defaults() is now internal to
4345           serverconfig.c, there are no reasons to show this internal stuff
4346           to the server.
4347
4348           Affected files are silcd/serverconfig.[ch].
4349
4350         * Added macro SILC_SERVER_LOG_STDERR(), this should replace most
4351           fprintf's to stderr, since some code may be executed again after
4352           the server went into the background.  Affected files are
4353           silcd/server.[ch].
4354
4355         * Added rehash support. Added function silc_server_rehash() that
4356           will perform all the basic tasks of the rehashing procedure.
4357
4358         * Added command line option `-x, --hexdump'. This will enable the
4359           SILC_LOG_HEXDUMP calls that are no longer enabled with `--debug'.
4360           The option `--hexdump' implies `--debug'.
4361
4362         * Fixed a bad bug in the logging APIs (silcutil library) where
4363           the application would crash after calling silc_log_reset_all().
4364
4365 Wed Mar 27 19:43:16 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4366
4367         * Fixed the KICKED notify handling in client library to
4368           correctly remove the channel and all entries from the
4369           channel when I was kicked.  This bug crashed the client.
4370
4371           Fixed yet another but in KICKED notify handling to remove
4372           the kicked client correctly from the channel.
4373
4374           Affected file is lib/silcclient/client_notify.c.
4375
4376         * Fixed a minor bug in looking up correct client entry
4377           in KICKED notify in server.  Affected file is
4378           silcd/packet_receive.c.
4379
4380         * Fixed the lib/silcmath/Makefile.am to include the MPI and GMP
4381           sources correctly to distribution.  Fixes --with-gmp option.
4382
4383         * Removed the manual rehashing from ID Cache, and changed it
4384           to use the SILC Hash Table's auto rehash feature.  Affected
4385           file is lib/silccore/silcidcache.c.
4386
4387 Wed Mar 27 00:07:11 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4388
4389         * Fixed a bug in the silc_client_nickname_format function that
4390           handles the multiple same nickname formatting.  Two clients
4391           with same nickname caused problems after the first one left
4392           and rejoined.  It didn't format the nickname correctly.
4393           Affected file is lib/silcclient/idlist.c.
4394
4395 Tue Mar 26 19:33:03 CET 2002  Pekka Riikonen <priikone@silcnet.org>
4396
4397         * Don't change the topic if olod topic is same as new one.
4398           Affected file is silcd/packet_receive.c.
4399
4400 Mon Mar 25 21:11:35 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4401
4402         * Added cross-reference support to the SILC Documentation
4403           generator.  All types across all HTML files are now cross-
4404           referenced.  Affected files util/robodoc/generator.c and
4405           scripts/silcdoc/silcdoc.
4406
4407         * Added file lib/silcutil/silctypes.h to include all the
4408           arithmetic type definitions and some macros.  Removed
4409           includes/bitmove.h and moved macros to silctypes.h.
4410
4411 Mon Mar 25 17:19:46 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4412
4413         * Merged bugfixes for Irssi SILC client from irssi.org CVS.
4414
4415 Sun Mar 24 11:21:04 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4416
4417         * Added `type' argument to silc_id_payload_parse_id function which
4418           now returns the type of the ID to the sent pointer.  Affected
4419           file is lib/silccore/silcid.[ch].
4420
4421         * Added check for CMODE_CHANGE notify type that mode change is
4422           allowed by the sender.  Affected file silcd/packet_receive.c.
4423
4424         * Added check for CUMODE_CHANGE notify type that mode change is
4425           allowed by the sender.  Affected file silcd/packet_receive.c.
4426           Added the ID type as CUMODE_CHANGE notify type as argument
4427           to the `notify' client operation.  Affected files are
4428           lib/silcclient/client_notify.c, irssi/src/silc/core/client_ops.c.
4429
4430         * Added function silc_client_add_server to the client library.
4431           Added support for resolving also channel and server info when
4432           received unknown entity in notify packet.  Affected files are
4433           lib/silcclient/idlist.[ch], lib/silcclient/client_notify.c.
4434
4435         * Added function silc_command_get_status to return the command
4436           status from the command reply's argument payload.  Affected files
4437           are lib/silccore/silccommand.[ch].
4438
4439         * Added check for KICKED notify type that the kicking is
4440           allowed by the client.  Affected file silcd/packet_receive.c.
4441
4442         * Created function silc_get_input which can be used to get input
4443           (echo on or off) from user on command line.  Affected files are
4444           lib/silcutil/silcutil.[ch].
4445
4446 Sat Mar 23 09:51:26 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4447
4448         * Optimized silc_server_packet_relay_to_channel function.
4449           Added new function silc_channel_message_payload_encrypt which
4450           can be called directly if channel message payload needs to
4451           be encrypted and is already encoded (no need to call _encode
4452           function).  Packet relaying is now done by router without any
4453           extra memory allocations.  Affected files are
4454           lib/silccore/silcchanel.[ch], silcd/packet_receive.c and
4455           silcd/packet_send.c.
4456
4457         * Fixed the INVITE notify handling.  It took wrong arguments
4458           as invite list and invite delete.  Affected file is
4459           silcd/packet_receive.c.
4460
4461         * Added check for TOPIC_SET notify type that the topic change is
4462           allowed by the client.  Affected file silcd/packet_receive.c.
4463
4464         * Added check for INVITE notify type that inviting is allowed by
4465           the client.  Affected file silcd/packet_receive.c.
4466
4467         * Changed the silc_server_client_on_channel to return the
4468           SilcChannelClientEntry as well.  Moved the function
4469           silc_server_check_cmode_rights to server_util.[ch].
4470           Affected files are silcd/server_util.[ch], silcd/command.c.
4471
4472         * Added function silc_server_check_umode_rights to check whether
4473           changing client's user mode is allowed.  Added check for
4474           UMODE_CHANGE notify type that the umode change is allowed
4475           by the client.  Affected files are silcd/server_util.[ch],
4476           silcd/packet_receive.c and silcd/command.c.
4477
4478 Fri Mar 22 12:25:58 CET 2002  Pekka Riikonen <priikone@silcnet.org>
4479
4480         * Fixed the SILC_PACKET_MAX_ID_LEN to actually be the max
4481           ID length.  It ignored that ID can be IPv6 based as well.
4482           Affected file lib/silccore/silcpacket.h.
4483
4484         * Fixed the silc_id_id2str and silc_id_str2id to take the
4485           IPv6 address offset's into consideration.  Affecte file is
4486           lib/silccore/silcid.c.
4487
4488 Thu Mar 21 20:44:13 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4489
4490         * Fixed the internal Unix scheduler functions to check for
4491           NULL context they may receive.  The affected file is
4492           lib/silcutil/unix/silcunixschedule.c.
4493
4494 Thu Mar 21 19:12:22 EET 2002  Timo Sirainen <tss@iki.fi>
4495
4496         * Changed hardcoded ~/.silc paths to use get_irssi_dir() so you
4497           can specify different directory with --home command line
4498           parameter. Affected files irssi/src/silc/core/client_ops.c,
4499           clientutil.c
4500
4501         * SILC-specific commands aren't now executed if the active server
4502           isn't of SILC-type, so there won't be problems with having
4503           IRC and SILC protocol support in same client. Affected files
4504           irssi/src/silc/core/silc-channels.c, silc-servers.c,
4505           silc-commands.h
4506
4507 Wed Mar 20 11:06:57 CET 2002  Pekka Riikonen <priikone@silcnet.org>
4508
4509         * Improved the signal support in SILC Schedule.  Added new
4510           function silc_schedule_signal_call which is used by application
4511           to mark a signal to be called.  It is now safe to perform
4512           any kind of tasks in signal callbacks since it is guaranteed
4513           that the application specified signal callback is called
4514           after the signal is over.  Affected files are
4515           lib/silcutil/silcschedule.[ch], lib/silcutil/*/silc*schedule.c.
4516
4517 Tue Mar 19 20:42:41 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4518
4519         * Added `name' field to SilcChannelPrivateKey to represent
4520           application given name for the key.  Moved also the context from
4521           lib/silcclient/idlist.h into lib/silcclient/silcclient.h.
4522           Added the `name' argument also to the function
4523           silc_client_add_channel_private_key.
4524
4525           Added function silc_client_current_channel_private_key to set the
4526           current channel private key in use.
4527
4528           Added "change" command to KEY command which can be used to change
4529           the current channel private key.  Bound the command also to
4530           alt+K (Alt+Shift+k).
4531
4532           Also affected files lib/silcclient/client_channel.c,
4533           irssi/src/docs/help/in/key.in, irssi/src/silc/core/silc-channel.c.
4534
4535 Tue Mar 19 16:32:43 CET 2002  Pekka Riikonen <priikone@silcnet.org>
4536
4537         * Added silc_rng_get_byte_fast function in to the
4538           lib/silccrypt/silcrng.[ch].
4539
4540         * Changed the interface of silc_packet_assemble and the
4541           silc_packet_send_prepare.  If silc_packet_assmble is now
4542           called the application does not call silc_packet_send_prepare
4543           because the library will call it automatically.  These
4544           interfaces now also return a reference to the outgoing buffer
4545           which includes the assembled packet, which the application can
4546           use to encrypt the packet.
4547
4548           Affected files are lib/silccore/silcpacket.[ch],
4549           lib/silcclient/client.c, client_channel.c client_prvmsg.c,
4550           silcd/packet_send.c, server_backup.c and packet_receive.c.
4551
4552         * Fixed a packet sending bug on very high load, where outgoing
4553           packet queue wasn't handled correctly and packets got corrupted.
4554           Affected files are lib/silcutil/*/silc*sockconn.c,
4555           lib/silcclient/client.c and silcd/server.c.
4556
4557 Mon Mar 18 21:00:41 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4558
4559         * Added macro SILC_PACKET_DATALEN which can be used during
4560           packet assembling to check whether the data to be added to
4561           the packet will fit to SILC_PACKET_MAX_LEN.  If not the data
4562           len is truncated until it fits it.
4563
4564           Added checks for maximum length of channel message payload and
4565           private message payload also.
4566
4567           Added checks for maximum packet length in server and in
4568           client library.
4569
4570           Affected files are lib/silccore/silcpacket.h, silcd/packet_send.c,
4571           lib/silcclient/client.c, lib/silccore/silcchannel.c and
4572           lib/silccore/silcprivate.c, lib/silcclient/client_channel.c and
4573           lib/silcclient/client_prvmsg.c.
4574
4575 Mon Mar 18 14:54:42 CET 2002  Pekka Riikonen <priikone@silcnet.org>
4576
4577         * Added silc_server_packet_queue_purge call to the
4578           silc_server_disconnect_remote to assure that all data in the
4579           queue before disconnecting is sent to the network.  Affected
4580           file silcd/server.c.
4581
4582 Sun Mar 17 19:26:16 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4583
4584         * Added the deleting of server's own ID cache entry to the
4585           silc_server_free function.  Free also everything else that
4586           has been allocated in silc_server_init.  The affected file
4587           is silcd/server.c.
4588
4589 Sun Mar 17 15:44:56 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4590
4591         * Added functions silc_parse_version_string, silc_version_to_num,
4592           and silc_ske_parse_version to parse SILC protocol style version
4593           strings.  Affected files lib/silcutil/silcutil.[ch] and
4594           lib/silcske/silcske.[ch].
4595
4596         * Added new configuration params: version_protocol, version_software
4597           and version_software_vendor to specify what version the remote
4598           host must at least be to be able to connect to server.  The vendor
4599           string can be regex matched too.  Added new function
4600           silc_server_connection_allowed to check maximum number of allowed
4601           connections, and allowed versions for incoming connections.
4602           Affected files are silcd/server.c, server_util.[ch] and
4603           serverconfig.[ch].
4604
4605 Sun Mar 17 10:24:50 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4606
4607         * Added preliminary support for signals in scheduler.  The
4608           signals we care about are now blocked always when the scheduler
4609           is locked.  This way we can synchronise the use of signal with
4610           scheduler.  It is guaranteed that when signal occurs the scheduler
4611           is not locked, and thus new tasks can be safely added to the
4612           scheduler.
4613
4614           Renamed silc_schedule_wakeup_init and silc_schedule_wakeup_uninit
4615           to silc_schedule_internal_init and silc_schedule_internal_uninit.
4616           Added new platform specific routines
4617           silc_schedule_internal_signals_[un]block and
4618           silc_schedule_internal_signal_[un]register.
4619
4620           Added new functions to SILC Schedule API:
4621           silc_schedule_signal_[un]register.  Each signal that application
4622           is going to use should be registered to the scheduler.
4623
4624           Affected files are lib/silcutil/silcschedule.[ch],
4625           lib/silcutil/*/silc*schedule.c.
4626
4627 Sat Mar 16 22:39:23 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4628
4629         * Check for unauthenticated client and server in the
4630           silc_server_new_client and silc_server_new_server functions.
4631           Affected file silcd/packet_receive.c.
4632
4633         * Added function silc_string_is_ascii to check whether given
4634           string is 7-bit ASCII string.  Affected files are
4635           lib/silcutil/silcutil.[ch].
4636
4637         * Added function silc_id_is_valid_server_id into the
4638           silcd/serverid.c and added checking for valid Server ID's in
4639           silc_server_new_server.  The Server ID must always be based
4640           on the server's public IP address.
4641
4642         * Added logging of DISCONNECT packet message in the server.
4643           Affected file silcd/server.c.
4644
4645 Sat Mar 16 18:04:30 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4646
4647         * Changed all library interfaces that use Global RNG to also
4648           accept SilcRng as argument.  Affected files are
4649           lib/silcclient/command.c, lib/silccore/silcauth.[ch],
4650           lib/silccore/silcchanel.[ch], lib/silcclient/client_channel.c,
4651           silcd/packet_send.c, lib/silccore/silcprivate.[ch],
4652           lib/silcmath/silcprimegen.c, lib/silcmath/silcmath.h, and
4653           lib/silccrypt/rsa.c.
4654
4655         * Added function silc_pkcs_generate_key to the
4656           lib/silccrypt/silcpkcs.[ch] for applications so that they
4657           don't need to do pkcs->pkcs->init calls anymore.
4658
4659         * Remove SilcSocketConnection from the SFTP API since it really
4660           wasn't needed there.  The application has the information
4661           saved in its contexts anyway and the SFTP layer doesn't need
4662           know about it.  Affected files lib/silcsft/silcsftp.h and
4663           lib/silcsftp/sftp_[server/client].c.
4664
4665         * Rewrote the SILC SIM (modules) interface in lib/silcsim.[ch].
4666           The SilcSimContext is not SilcSim.
4667
4668         * Fixed possible buffer overflows in silc_id_render in the
4669           lib/silcutil/silcutil.c.
4670
4671         * On EPOC the global crypto module lists are not used at all
4672           in the crypto library.  Added support for using the constant
4673           algorithm list on EPOC.  Affected files are
4674           lib/silccrypt/silccipher.c, silchash.c, silchmac.c and
4675           silcpkcs.c.
4676
4677         * Fixed the handling of third parameter of KICKED notify, since
4678           it was mistakenly updated to SILC Protocol 1.0 even though it
4679           is to be included in 1.1.  Since it is not in 1.0 it is not
4680           mandatory, and this fix now handles it only if it is provided,
4681           and it is not error if it is not provided.  Affected file
4682           lib/silcclient/client_notify.c.
4683
4684 Sat Mar 16 09:07:27 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4685
4686         * Handled CHANNEL_CHANGE notify (ignore it) in Irssi SILC
4687           client.  Affected file irssi/src/silc/core/client_ops.c.
4688
4689         * Merged with Irssi 0.8.4 from irssi.org CVS.
4690
4691 Thu Mar 14 12:53:57 CET 2002  Pekka Riikonen <priikone@silcnet.org>
4692
4693         * Check for valid socket connection in client entries before
4694           sending any messages.  Fixes a crash, but doesn't fix some
4695           other underlaying bug that is lurking there.  Affected
4696           file silcd/packet_send.c.
4697
4698 Thu Mar 14 13:38:12 EET 2002  Timo Sirainen <tss@iki.fi>
4699
4700         * $usermode, $cumode and $cumode_space expandos shouldn't do
4701           anything with non-SILC server records. Affected file
4702           irssi/src/silc/core/silc-expandos.c
4703
4704 Wed Mar 13 21:38:26 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4705
4706         * Fixed the silc_net_check_[host/local]_by_sock to support
4707           IPv6 bound sockets as well.  Now they can return IPv6 addresses
4708           as well.  Affected file lib/silcutil/silcnet.c.
4709
4710         * Fixed silc_net_addr2bin to correctly convert IPv6 addresses.
4711           Affected lib/silcutil/unix/silcunixnet.c.
4712
4713         * Fixed ID rendering (at least on some platforms, not NetBSD)
4714           for IPv6 addresses.  Affected file lib/silcutil/silcutil.c.
4715
4716 Tue Mar 12 17:58:59 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4717
4718         * Added silc_hash_public_key and silc_hash_public_key_compare
4719           functions to be used with SilcHashTable.  They can be used to
4720           hash public keys and compare public keys in hash table.  Affected
4721           file lib/silcutil/silcutil.[ch].
4722
4723         * Added support for specifying multiple public keys for Client
4724           connection section in server configuration file.  This makes it
4725           possible to accept multiple public keys from same host, or to
4726           make a section that accepts any incoming host, and have the
4727           accepted public keys listed in the section.
4728
4729           Added functions silc_sever_[find/get]_public_key,  added the
4730           support for this actually to all connection sections but only
4731           the Client section is currently allowed to specify multiple
4732           public keys.
4733
4734           Affected files are silcd/server.c, server_internal.h,
4735           command.c, protocol.c, server_util.[ch], packet_receive.c.
4736
4737 Mon Mar 11 23:37:38 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4738
4739         * Merged Irssi 0.8.2 from irssi.org CVS.
4740
4741 Sun Mar 10 23:34:48 CET 2002  Johnny Mnemonic <johnny@themnemonic.org>
4742
4743         * If silc_debug is TRUE, also output standard logging messages
4744           to stderr with the debug output.
4745
4746           Made silc_log_reset_all() flushing all channels before returning.
4747           Also fixed some documentation typos.
4748
4749           Affected files are lib/silcutil/silclog.[ch].
4750
4751 Sun Mar 10 20:07:49 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4752
4753         * Fixed the server to check correctly the amount of connections
4754           from single host, by checking also the type of the connection.
4755           Fixed also the comparison of number of connections and number
4756           of allowed connections.  Affected files are silcd/server.c,
4757           server_util.[ch].
4758
4759 Fri Mar  8 17:16:41 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4760
4761         * Fixed the USERS command reply to save the user's mode on the
4762           channel as well.  Fixed JOIN command reply to check whether a
4763           client is on channel already and not join it twice.  Affected
4764           file lib/silcclient/command_reply.c.
4765
4766         * Added new file silc-expandos.c into irssi/silc/core/ to return
4767           various stuff for various signal for the statusbar etc. updating.
4768           Now Irssi SILC client prints channel user modes etc. on the
4769           statusbar.
4770
4771         * The user mode (like server/router operator changes) is now shown
4772           on the Irssi SILC client's statusbar.  The affected files are
4773           irssi/src/silc/core/client_ops.c, silc-expandos.c.
4774
4775 Thu Mar  7 19:21:22 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4776
4777         * Changed silc_mutex_[un]lock calls in lib/silcutil/silcschedule.c
4778           to SILC_SCHEDULE_[UN]LOCK macros.
4779
4780         * Added more error printing to logs in server code.  Affected
4781           files silcd/server.c and silcd/protocol.c.
4782
4783         * Fixed -S option parsing in Irssi SILC Client.  Affected file
4784           irssi/src/silc/core/silc-core.c.
4785
4786         * Added silc_buffer_alloc_size function.  Affected file is
4787           lib/silcutil/silcbuffer.h.
4788
4789 Tue Mar  5 14:37:27 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4790
4791         * Changed all silc_[hash|hmac|cipher|pkcs]_default tables to
4792           constants.  Affected files in
4793           lib/silccrypt/silcpkcs.[ch], silchash.[ch], silchmac.[ch] and
4794           silccipher.[ch].
4795
4796         * Changed the internal SFTP Memory FS table to const.  Affected
4797           file lib/silcsftp/sftp_fs_memory.c.
4798
4799 Sun Mar  3 18:37:13 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4800
4801         * Fixed the buffer formatting and unformatting routines to
4802           check the size of 64 bits types with sizeof().  Affected
4803           file is lib/silcutil/silcbuffmt.c.
4804
4805 Mon Feb 25 17:19:05 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4806
4807         * Removed 0.6.x backwards support.
4808
4809 Sun Feb 24 12:53:25 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4810
4811         * Changed all integer type names:
4812           [u]int[8/16/32/64] -> Silc[UInt/Int][8/16/32/64].  This is
4813           to avoid collisions with other libraries using same type names
4814           as we did.
4815
4816 Sat Feb 23 20:31:43 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4817
4818         * Added `prefer_ipv6' argument to the functions
4819           silc_net_gethostbyname[_async].  If it is TRUE it will return
4820           IPv6 address over IPv4.  If FALSE IPv4 address is returned
4821           even if IPv6 address was found.  Affected files
4822           lib/silcutil/silcnet.[ch].
4823
4824         * Added support silc_net_create_connection[_async] to fallback
4825           to IPv4 address if IPv6 address could not be used (like if
4826           it doesn't work on a specific system).  Affected file in
4827           lib/silcutil/unix/silcunixnet.c.
4828
4829 Sat Feb 23 15:20:30 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4830
4831         * Added silc_schedule_reinit function to do the enlarging
4832           of the max tasks handling capabilities of the scheduler.
4833           Affected files lib/silcutil/silcschedule.[ch].
4834
4835 Wed Feb 20 20:41:01 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4836
4837         * Added automatic extern "C" { ... } for C++ compilers so the
4838           application does not need to define them.  Affected file
4839           includes/silcincludes.h.
4840
4841         * Renamed lib/silcclient/silcapi.h to silcclient.h as the
4842           old name went against naming convention.  Applications now
4843           include "silcclient.h" instead of "clientlibincludes.h".
4844           Removed includes/clientlibincludes.h, it is redundant now.
4845
4846         * Renamed includes/version.h to silcversion.h.
4847
4848         * Added really preliminary support for OS/2 into the util
4849           library.  Only thread & mutex API is implemented, others
4850           are still to be implemented.  Created the lib/silcutil/os2/
4851           directory.  Created also file includes/silcos2.h.
4852
4853 Wed Feb 20 18:48:49 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4854
4855         * Added preliminary BeOS support into the util library.
4856           Created lib/silcutil/beos/, and implemented all the needed
4857           functions to support SILC on BeOS.  Created also file
4858           includes/silcbeos.h.
4859
4860 Mon Feb 18 15:49:22 EET 2002  Timo Sirainen <tss@iki.fi>
4861
4862         * Added proper initializations to silc's irssi code, so it's
4863           now possible to load it as module.  Affected files
4864           irssi/src/silc/core/silc-core.c,
4865           fe-common/silc/fe-common-silc-core.[ch] and fe-text/silc.c
4866
4867 Sun Feb 17 19:02:56 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4868
4869         * Merged latest Irssi (0.8.1) from the irssi.org's CVS into
4870           the SILC tree.
4871
4872         * Fixed the silcdoc document generator to correct generate
4873           docs from all kinds of filenames.  Affected files are
4874           util/robodoc/Source/generator.c, scripts/silcdoc/silcdoc
4875
4876         * ROBOdoc documented lib/silcutil/silcmemory.h.
4877           Added also new function silc_memdup.
4878
4879         * Removed lib/silcutil/silcbufutil.h and moved those routines
4880           to the lib/silcutil/silcbuffer.h.
4881
4882 Sun Feb 17 15:52:30 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4883
4884         * Added `user_count' to the SilcChannelEntry which now tells the
4885           number of users on the channel.  The user count is now saved
4886           in normal server of global channels as well.  Affected files
4887           silcd/server.c, idlist.h, packet_receive.c and command.c.
4888
4889         * Splitted lib/silcutil/silcutil.[ch] into silcfileutil.[ch] to
4890           include file utility functions.
4891
4892         * Fixed the lib/silcsftp/sftp_fs_memory.c to use silcutil routines
4893           instead of calling directly OS routines.
4894
4895         * Fixed NICK change printing in Irssi SILC Client. Fixed
4896           KICKED notify printing in Irssi SILC Client.  Affected file
4897           irssi/src/silc/core/client_ops.c.
4898
4899         * Fixed a NICK change bug in client library, to not recreate the
4900           client_entry->channels hash table everytime nick is changed.
4901           Affected file lib/silcclient/client.c.
4902
4903 Sun Feb 17 10:10:14 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4904
4905         * ROBOdoc documented the lib/silcske/silcske.h, and improved
4906           the SKE interface a bit.
4907
4908         * Fixed padding problem in PKCS#1. The padding was not actually
4909           random since the random number generator was used incorrectly.
4910           This security bug affects only when encrypting with PKCS#1, and
4911           it is not currently used at all in SILC. SILC only use signing
4912           with PKCS#1. Affected file lib/silccrypt/pkcs1.c.
4913
4914 Sat Feb 16 13:44:24 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4915
4916         * Rewrote the notify handling in Irssi SILC client to not call
4917           the events as signals.  Fixes problems with Perl support.
4918           Affected files irssi/src/silc/core/client_ops.c, silc-channels.c.
4919
4920         * Send the auto-nicking NICK command in client library with
4921           little timeout after connecting.  The affected file is
4922           lib/silcclient/client.c.
4923
4924         * Added following new config file settings:
4925           channel_rekey_secs, key_exchange_rekey, key_exchange_pfs,
4926           key_exchange_timeout, conn_auth_timeout, connections_max,
4927           links_max.
4928
4929           Implemented all the new config settings handling in the server.
4930
4931           Optimized the use of SKE Mutual flag usage.  Use it only
4932           if connection authentication protocol is not based in public
4933           key authentication.
4934
4935           Renamed all SilcServerConfigSection* to SilcServerConfig*
4936           to have a bit shorter names.
4937
4938           Affected files silcd/serverconfig.[ch], server.[ch], and
4939           protocol.[ch].
4940
4941 Sat Feb 16 02:46:43 CET 2002  Johnny Mnemonic <johnny@themnemonic.org>
4942
4943         * Cleaned up the listening sockets code, preparing for the rehash
4944           support.  Affected file is silcd/server.c.
4945
4946         * Fixed some output messages.  Affected files are silcd/silcd.c,
4947           and silcd/server.c.
4948
4949 Fri Feb 15 19:10:20 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4950
4951         * Create lib/doc/silcrng_intro.html document as introduction
4952           to SILC RNG.  ROBOdoc documented lib/silccrypt/silcrng.h.
4953
4954 Fri Feb 15 13:23:03 CET 2002  Johnny Mnemonic <johnny@themnemonic.org>
4955
4956         * Fixes to the silcd config template.  Affected file is
4957           doc/example_silcd.conf.in.
4958
4959         * Removed type casts from silc_calloc(), conforming to the
4960           CodingStyle.  Affected file is lib/silcutil/silcconfig.c.
4961
4962         * Removed param_name member from client, server, and router
4963           section structs, now identifying the param directly.
4964
4965           Added CONFIG_FREE_AUTH macro in config file parsing.
4966
4967           Affected files are silcd/serverconfig.[ch].
4968
4969 Fri Feb 15 12:24:08 EET 2002  Timo Sirainen <tss@iki.fi>
4970
4971         * Fixed command line parameter handling. All SILC initialization
4972           is now done in silc_core_init() which also fixes autoconnecting
4973           to servers.
4974
4975           Affected files irssi/src/silc/core/silc-core.c,
4976           irssi/src/fe-text/silc.c.
4977
4978 Thu Feb 14 22:03:58 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4979
4980         * Added new configuration options and blocks:
4981           keepalive_secs, reconnect_count, reconnect_interval,
4982           reconnect_interval_max, reconnect_keep_trying and
4983           require_reverser_lookup.  Added ConnectionParam block, and
4984           implemented the connection parameters when connecting as
4985           initiator and when accepting connections as responder.
4986
4987           Added CONFIG_IS_DOUBLE macro in config file parsing, to check
4988           whether given configuration value has been given already.
4989
4990           Affected files silcd/serverconfig.[c], server.[c].
4991
4992         * Splitted the doc/example_silcd.conf.in.  Separated the crypto
4993           algorithm parts and created new file silcalgs.conf, that
4994           is now included from the example_silcd.conf.in.
4995
4996         * Optimized the silc_server_connect_to_router_second to take
4997           the connection configuration object from the SilcServerConnection
4998           object instead of finding it during the connecting phase.
4999           Added the configuration object to SilcServerConnection struct.
5000           Affected files silcd/server_internal.h, server.c.
5001
5002 Thu Feb 14 16:02:26 CET 2002  Pekka Riikonen <priikone@silcnet.org>
5003
5004         * Add the client on channel after it was resolved at the
5005           channel message receiving, and it was not already on the
5006           channel.  Affected file lib/silcclient/client_channel.c.
5007
5008 Wed Feb 13 23:16:41 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5009
5010         * Fixed the public key authentication to allocate always the
5011           destination signature buffer instead of using static buffer.
5012           Affected file silcd/protocol.c.
5013
5014 Wed Feb 13 20:51:13 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5015
5016         * Unified the serverconfig.[ch]'s helper function interface.
5017           Affected file silcd/serverconfig.[ch].
5018
5019         * Removed doc/example_silc.conf.in since it is redundant.
5020           The make install will now install irssi/silc.conf file.
5021
5022         * Added new Passphrase and Publickey authentication methods to
5023           config file, allowing both public key and passphrase based
5024           authentication to be set at the same time.
5025
5026           Added `prefer_passphrase_auth' setting in config file which
5027           can be used to set to prefer passwd auth if both passwd and
5028           public key is set.  If not set, public key is preferred.
5029           This has effect only when being initiator (responder will try
5030           both anyway).
5031
5032           Added support for authentication with passphrase and public key
5033           at the same time.  The passphrase is tried first always since
5034           it is faster to check.
5035
5036           Affected file silcd/serverconfig.[ch], server.c, protocol.[ch].
5037
5038 Wed Feb 13 12:46:25 CET 2002  Johnny Mnemonic <johnny@themnemonic.org>
5039
5040         * Merged the new SILC Config library, with the server parsing
5041           support.  Read the header file silcconfig.h or the toolkit
5042           documentation for the news.  Affected files are
5043           doc/example_silcd.conf.in lib/silcutil/silcconfig.[ch]
5044           silcd/command.c silcd/packet_receive.c silcd/packet_send.c
5045           silcd/protocol.c silcd/server.c silcd/server_backup.c
5046           silcd/serverconfig.[ch] silcd/silcd.c.
5047
5048         * Fixed some silclog documentation.  Affected file is
5049           lib/silcutil/silclog.h.
5050
5051 Sun Feb 10 18:11:30 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5052
5053         * The silc_cipher_register, silc_hash_register and
5054           silc_hmac_register now checks if the object to be registered
5055           is registered already.  Affected files are
5056           lib/silccrypt/silccipher.c, silchash.c and silchmac.c.
5057
5058 Sun Feb 10 15:48:38 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5059
5060         * Merged new irssi from irssi.org's CVS, the version 0.7.99.
5061
5062 Sat Feb  9 14:54:33 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5063
5064         * Allow zero length channel messages inside the Channel Message
5065           Payload.  Affected file lib/silccore/silcchannel.c.
5066
5067         * Fixed scripts/silcdoc/silcdoc to support all kinds of filenames
5068           as header filenames.
5069
5070         * Removed lib/silcclient/README and created HTML file
5071           lib/silcclient/silcclient_using.html, which is now included
5072           as part of Toolkit documentation.
5073
5074 Thu Feb  7 10:12:25 CET 2002  Pekka Riikonen <priikone@silcnet.org>
5075
5076         * Fixed CUMODE_CHANGE notify handling to change the mode of
5077           correct client.  Affected file lib/silcclient/client_notify.c.
5078
5079         * Make silc_rng_alloc fail if it cannot allocate the sha1
5080           hash algorithm.  Affected file lib/silccrypt/silcrng.c.
5081
5082 Sun Feb  3 17:20:52 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5083
5084         * Fixed the file transfer's key agreement payload to include
5085           zero port also if the hostname is NULL because it could not
5086           be bound.
5087
5088           Call file transfer monitor callback now also if error occurs
5089           during key agreement protocol.
5090
5091           Changed the silc_client_file_send interface to return the
5092           SilcClientFileError instead of session id.  The session ID
5093           is returned into pointer provided as argument.
5094
5095           Check that the file exists locally before sending the
5096           file transfer request at all.
5097
5098           Affected file lib/silcclient/client_ftp.c, silcapi.h.
5099
5100         * Added SILC_CLIENT_FILE_KEY_AGREEMENT_FAILED file transfer
5101           error than can occur while key agreement protocol.  Affected
5102           file lib/silcclient/silcapi.h.
5103
5104         * Fixed the event_mode CMODE handler to not crash when mode
5105           is changed and +k mode is set in the channel.  Affected file
5106           irssi/src/silc/core/silc-channels.c.
5107
5108         * Fixed SILC_LOG_ERROR to give out Error and not Warning, and
5109           SILC_LOG_WARNING to give out Warning and not Error.  Affected
5110           file lib/silcutil/silclog.c.
5111
5112         * Fixed the channel message payload decryption in the function
5113           silc_channel_message_payload_decrypt to not modify the original
5114           buffer before it is verified that the message decrypted
5115           correctly.  Otherwise, next time it is called with correct
5116           channel key it won't encrypt since the payload is corrupted.
5117           Affected file lib/silccore/silcchannel.c.
5118
5119 Sun Feb  3 11:46:12 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5120
5121         * Do not constantly resize the window.  A fix patch by cras.
5122           Affected file irssi/src/fe-text/screen.c.
5123
5124 Sat Feb  2 16:54:18 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5125
5126         * Applied IPv6 fix patch from Jun-ichiro itojun Hagino.
5127           Affected file lib/silcutil/silcnet.c.
5128
5129 Fri Feb  1 22:33:11 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5130
5131         * Fixed a bug in hash table internal routine for traversing
5132           the table with foreach callback.  The current entry may
5133           become invalid in the callback but it was referenced after
5134           the callback returned.
5135
5136           Do not allow auto rehashing of hash table during the
5137           silc_hash_table_foreach operation, for same reasons as it is
5138           not allowed for SilcHashTableList.  Affected files are
5139           lib/silcutil/silchashtable.[ch].
5140
5141 Fri Feb  1 14:55:00 CET 2002  Pekka Riikonen <priikone@silcnet.org>
5142
5143         * Defined DLLAPI into silcincludes.h and silcwin32.h for
5144           Win32 DLL.  extern's in header files are now declared with
5145           DLLAPI.
5146
5147 Thu Jan 31 23:34:33 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5148
5149         * Fixed private message handling.  It used some old code that
5150           caused the client to crash.  Affecte file is
5151           lib/silcclient/client_prvmsg.c.
5152
5153 Thu Jan 31 19:06:22 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5154
5155         * Added function silc_client_add_channel,
5156           silc_client_replace_channel_id, and removed functions
5157           silc_client_new_channel_id and silc_idlist_get_channel_by_id
5158           from client library.
5159
5160         * Added cross reference of the joined channels to the
5161           SilcClientEntry, and changed the SilcChannelEntry's
5162           users list to SilcHashTable.  The affected files are
5163           lib/silcclient/idlist.[ch].
5164
5165         * Fixed a bug in hash table tarversing.  While the hash table
5166           is traversed with SilcHashTableList the table must not be
5167           rehashed.  It is now guaranteed that auto rehashable tables
5168           are not rehashed while tarversing the list.  Also defined that
5169           silc_hash_table_rehash must not be called while tarversing
5170           the table.  Added function silc_hash_table_list_reset that must
5171           be called after the tarversing is over.  The affected files are
5172           lib/silcutil/silchashtable.[ch].
5173
5174         * Changed all hash table traversing to call the new
5175           silc_hash_table_list_reset in server and in client library.
5176
5177         * Added function silc_client_on_channel to return the
5178           SilcChannelUser entry if the specified client entry is joined
5179           on the specified channel.  This is exported to application as
5180           well.  Affected files lib/silcclient/client_channel.c, silcapi.h.
5181
5182 Wed Jan 30 19:14:31 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5183
5184         * Fixed founder regaining problem with JOIN command on normal
5185           server.  The notify for mode change must be sent always and
5186           not only if !cmd->pending.  Affected file silcd/command.c.
5187
5188         * Fixed the WHOWAS command's reply sending to support the
5189           lists correctly.  Affected file silcd/command.c.
5190
5191 Wed Jan 30 11:11:47 CET 2002  Pekka Riikonen <priikone@silcnet.org>
5192
5193         * When sending JOIN command to router for processing the
5194           sender's old command identifier was not saved back to the
5195           sender's command context, fixed now.  The affected file is
5196           silcd/command.c.
5197
5198         * Create the key in JOIN command of the router did not return
5199           the channel key, added check for this.  Affected file is
5200           silcd/command.c.
5201
5202         * Fixed a channel ID update bug in JOIN command reply.  Do
5203           not directly upgrade the ID but call the function
5204           silc_idlist_replace_channel_id if the ID was changed.
5205           Affected file silcd/command_reply.c.
5206
5207         * Fixed memory leaks from command calling if it would fail.
5208           Affected file silcd/command.c.
5209
5210 Tue Jan 29 19:49:31 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5211
5212         * Applied patches from cras:
5213
5214           Memory leak fixes around libaries, irssi window resize fix,
5215           new silclist.h and silcdlist.h, all extern inline changed to
5216           static inline.
5217
5218         * Removed dotconf from lib/dotconf, not needed anymore.
5219
5220         * Removed TRQ from lib/trq, not needed anymore.
5221
5222         * Do more frequent heartbeats (5 minutes instead of 10 minutes)
5223           with server connections.  Later this will be configurable
5224           in config file after new config file is done.  Affected file
5225           silcd/server.c.
5226
5227 Tue Jan 29 10:35:03 CET 2002  Pekka Riikonen <priikone@silcnet.org>
5228
5229         * Fixed a crash in server related to channel announcements.
5230           Affected file silcd/server.c.
5231
5232 Mon Jan 28 17:49:42 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5233
5234         * Fixed memory leaks in silc_server_create_new_channel*
5235           functions.  Affected file silcd/server.c.
5236
5237         * Fixed the CHANNEL_CHANGE notify to re-announce the channel
5238           which ID was changed.  This way the router will send the
5239           user list for the channel again, and server won't be in
5240           desync in some rare circumstances.  Affected file is
5241           silcd/packet_receive.c.
5242
5243 Sun Jan 27 21:04:19 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5244
5245         * Check for NULL socket pointer in the function
5246           silc_server_packet_send_to_channel_real.  Affected file
5247           silcd/packet_send.c.
5248
5249         * Fixed the BAN notify handling to correctly remove ban
5250           list.  Affected file silcd/packet_receive.c.
5251
5252 Sat Jan 26 23:01:03 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5253
5254         * Fixed some header addition to Toolkit distribution in
5255           lib/silcutil/Makefile.am and lib/trq/Makefile.am.
5256
5257         * Added lib/silcclient/client_ops_example.h as an template
5258           file for application programmers to quickly start using
5259           the SilcClientOperation functions in their application.
5260           Updated the lib/silcclient/README as well to tell about this
5261           nice file made available.
5262
5263 Sat Jan 26 10:45:41 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5264
5265         * Call silc_server_remove_from_channels when removing client
5266           entry when NO_SUCH_CLIENT_ID was received.  Affected file
5267           is silcd/command_reply.c.
5268
5269 Fri Jan 25 19:12:36 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5270
5271         * Added server & router operator statistics updating.  Affected
5272           file silcd/packet_receive.c and silcd/command.c.
5273
5274         * Fixed the SERVER_SIGNOFF notify handling on normal server
5275           not to save the history information for clients.  Same was
5276           fixed earlier in remove_clients_by_server function, but not
5277           here.  Affected file silcd/packet_receive.c.
5278
5279         * Raised the default connection-retry count from 4 to 7 in
5280           server.  Affected file silcd/server.h.
5281
5282         * Cancel any possible reconnect timeouts when we start the
5283           key exchange.  Affected file silcd/server.c.
5284
5285         * Do not reconnect on connection failure when SCONNECT was
5286           given.  Affected files silcd/server.[ch].
5287
5288 Tue Jan 22 18:19:36 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5289
5290         * Removed assert()'s from the lib/silcclient/client_keyagr.c.
5291
5292         * Fixed the NICK command to always give the unformatted
5293           nickname to the one giving the NICK command.  If unformatted
5294           nickname is cached already it will be formatted and the
5295           local entry will always get the unformatted nickname.
5296           Affected file lib/silcclient/idlist.c.
5297
5298         * Fixed some double frees from client library commands.
5299           Affected file is lib/silcclient/command.c.
5300
5301         * Fixed CUMODE command in server to assure that no one can
5302           change founder's mode than the founder itself, there was a
5303           little bug.  Affected file silcd/command.c.
5304
5305 Mon Jan 21 19:07:53 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5306
5307         * Removed the SilcClientCommandDestructor from the client
5308           libary, it is not needed anymore.  Affected files are
5309           lib/silcclient/silcapi.h, command[_reply].[ch],
5310           client_notify, idlist.c.
5311
5312         * Fixed GETKEY command to first resolve client, and then
5313           resolve the server only if the client was not found, instead
5314           of resolving both at the same time.  Affected file is
5315           lib/silcclient/command.c.
5316
5317         * Added silc_client_start_key_exchange_cb and lookup the
5318           remote hostname and IP address before starting the key
5319           exchange with server.  The affected file is
5320           lib/silcclient/client.c.
5321
5322         * The server's public key is now saved using the IP address
5323           of the server and not the servername for the filename.
5324           The hostname public key filename is checked as an fall back
5325           method if the IP address based filename is not found.
5326
5327           Fixed the GETKEY command to save the fetched server key
5328           in correct filename.
5329
5330           Print the remote server's hostname now when new key is
5331           received during connection process.  Affected file is
5332           irssi/src/silc/core/client_ops.c.
5333
5334         * Return always our own public key to the client if it asks
5335           for it with GETKEY command.  Affected file silcd/command.c.
5336
5337         * Removed the use_auto_addr variable from default config
5338           file since it was in wrong section.  Affected file is
5339           irssi/src/config.
5340
5341         * Fixed TOPIC_CHANGE notification to not route it when it
5342           was sent using silc_server_send_notify_to_channel function.
5343           Affected file silcd/command.c.
5344
5345         * Fixed silc_server_send_notify_kicked to send the kicker's
5346           Client ID also, it was missing.  Affected files are
5347           silcd/command.c, silcd/packet_send.[ch].
5348
5349 Thu Jan 17 18:59:11 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5350
5351         * Do not save client history information in SERVER_SIGNOFF.
5352           Fixes the bug in normal server that it does not detect
5353           the client becoming valid after the server becomes back
5354           online.  Affected file silcd/server_util.c.
5355
5356         * Added `sock_error' field  into the SilcSocketConnection
5357           context.  When error occurs during socket operation (read
5358           or write) the error is saved.  Added also new function
5359           silc_socket_get_error to return human readable socket error
5360           message.  Affected files are lib/silcutil/silcsockconn.[ch],
5361           lib/silcutil/unix/silcunixsockconn.c, and
5362           lib/silcutil/win32/silcwin32sockconn.c.
5363
5364         * The server now prints the socket error message in the
5365           signoff for client.  Affected file silcd/server.c.
5366
5367         * Fixed the `created' channel information sending from router
5368           to server in JOIN command.  Checks now whether the channel
5369           really was created or not and set it according that.
5370
5371           Fixed the JOIN command to use the client entry's current
5372           ID during the joining procedure instead of the one it sent
5373           in the command (it is checked though), since it can change
5374           between the packet processing and command processing, and
5375           would just case unnecessary pain in the client end.  Affected
5376           file silcd/command.c.
5377
5378         * Fixed a channel key payload sending to use correct channel
5379           ID when the server was forced to change the channel's ID by
5380           router.  Router sent the key payload with the old Channel ID.
5381           Affected file silcd/packet_receive.c.
5382
5383 Wed Jan 16 22:26:30 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5384
5385         * Call silc_server_save_channel_key only if the key payload
5386           was provided in the JOIN command's command reply.  Affected
5387           file silcd/command_reply.c.
5388
5389 Tue Jan 15 18:49:41 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5390
5391         * Fixed silc_mp_sizeinbase to return the value correctly with
5392           MPI.  Affected file lib/silcmath/mp_mpi.c.
5393
5394         * Fixed the stop_server signal to correctly stop the scheduler
5395           and gracefully stop the server when SIGTERM or SIGINT signals
5396           are received.  Affected file silcd/silcd.c.
5397
5398 Mon Jan  7 23:38:19 CET 2002  Johnny Mnemonic <johnny@themnemonic.org>
5399
5400         * Simple handling of TERM and HUP signals. Also added some log
5401           flushing call around.  Affected file is
5402           silcd/silcd.c.
5403
5404         * Fixed small bugs in silclog.c. Now buffering output will take
5405           effect after 10 seconds since startup: This will ensure that
5406           no important startup messages are lost. Also output redirection
5407           will preserve original format ([Date] [Type] message).
5408           Affected file is lib/silcutil/silclog.c.
5409
5410         * Added two options to the config file, in the logging section:
5411           quicklogs:<yes/no>: and flushdelay:<seconds>:.  Affected files
5412           lib/silcutil/silclog.[ch], silcd/serverconfig.[ch].
5413
5414 Sun Jan  6 12:49:40 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5415
5416         * Do not print the warning about log files not being initialized
5417           more than once to avoid excess logging.  Affected file is
5418           lib/silcutil/silclog.c.
5419
5420         * Fixed the SIM compilation in lib/silcsim/Makefile.am.  Fixed
5421           the SIM copying in make install in Makefile.am.pre.
5422
5423 Sun Jan  6 01:10:21 CET 2001  Johnny Mnemonic <johnny@themnemonic.org>
5424
5425         * Rewritten silclog APIs. Globally interesting changes follows:
5426           silc_log_set_files() changed to silc_log_set_file().
5427           silc_log_set_callbacks() changed to silc_log_set_callback().
5428           ROBOdoc documented silclog header file.
5429           SilcLogCb now returns bool to wether inihibit the default
5430           handler or not (to keep the old behaviour return always TRUE).
5431           The new APIs should also fix the problem of the
5432           silcd_error.log file that was written in the current directory.
5433
5434           New features:
5435           Log files streams will remain opened after silc_log_set_file()
5436           call, means less CPU usage notably on high traffic servers.
5437           File streams are now full buffered, and flushed to the disk
5438           every 5 minutes, lesses HD activity and CPU usage.
5439           Messages can be redirected, allowing admins to configure
5440           one single logfile for all server messages.
5441           the silc_log_quick global variable to activate fast-logging.
5442           Affected files lib/silcutil/silclog.[ch]
5443
5444         * Changed some code to conform new silclog APIs. Affected
5445           files are doc/example_silcd.conf.in, silcd/server.c
5446           irssi/src/silc/core/silc-core.c, silcd/serverconfig.[ch],
5447           silcd/silcd.c.
5448
5449         * Fixed a memory leak that could occur in some situations.
5450           Affected file silcd/serverconfig.c.
5451
5452 Sat Jan  5 13:37:29 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5453
5454         * Added the silc_client_del_client to remove the client from
5455           all channels as well.  Affected file lib/silcclient/idlist.c.
5456
5457         * Fixed the client library to correctly remove the client
5458           from all channels when the client entry is being destroyed.
5459           Affected file lib/silcclient/client_notify.c, command.c.
5460
5461         * Added auto-nicking support to the client library.  If the
5462           applicatio now sets client->nickname it will be sent to the
5463           server after connecting by the library.  This way for example
5464           SILCNICK (or IRCNICK) environment variables will have effect
5465           and always change the nickname automatically to whatever
5466           it is wanted.  Affected file lib/silcclient/client.[ch].
5467
5468         * Renamed silc_server_command_bad_chars to the
5469           silc_server_name_bad_chars and moved it to the
5470           silcd/server_util.[ch].  Added also new function
5471           silc_server_name_modify_bad to return nickname that
5472           includes bad characters as new nickname without those
5473           bad characters.  This check and modify is now used in
5474           silc_server_new_client when the username is initially set
5475           as nickname, so it must be checked to be valid nickname.
5476           Affected file silcd/packet_receive.c.
5477
5478         * The nickname length is now taken from the packet for real
5479           and not trusted to strlen() since it clearly can return
5480           wrong length for nickname including bad characters.  This
5481           also applies to channel names.  Affected file silcd/command.c.
5482
5483         * Removed the lib/silcsilm/modules directory.  Modules are now
5484           compiled into the lib/silcsim.  Fixed the copying of the
5485           modules to follow symbolic links in Makefile.am.pre.
5486
5487 Wed Jan  2 18:56:21 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5488
5489         * Fixed silc_string_regexify list creation.  Fixes bugs with
5490           BAN and INVITE commands in server.  The affected file is
5491           lib/silcutil/unix/silcunixutil.c.
5492
5493 Sun Dec 30 13:41:34 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5494
5495         * Removed the command destructor entirely from the server's
5496           command and command reply routines.  It is not needed, and
5497           its usage was buggy and caused crashes.  Affected files are
5498           silcd/command[_reply].[ch].
5499
5500 Fri Dec 28 12:43:22 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5501
5502         * Cancel protocol and NULL sock->protocol if timeout
5503           occurred during protocol.  Affected file silcd/server.c.
5504
5505         * Cancel protocol timeouts always before calling the final
5506           callback, to assure that after final callback is called
5507           no other state will be called for the protocol anymore.
5508           Affected file silcd/protocol.c.
5509
5510         * Print error log if incoming connection configuration could
5511           not be found.  Affected file silcd/server.c.
5512
5513         * Fixed JOIN command to correctly save the founder mode
5514           to the client on normal SILC server, when the channel
5515           was created by the router.  Affected file silcd/command.c.
5516
5517         * Fixed LIST command (hopefully) to send correct reply
5518           packets.  Affected file silcd/command.c.
5519
5520 Thu Dec 20 16:14:52 CET 2001  Pekka Riikonen <priikone@silcnet.org>
5521
5522         * The silc_packet_receive_process now returns FALSE if the
5523           read data was invalid packet, and TRUE if it was ok.
5524
5525           The server now checks that if unauthenticated connection
5526           sends data and its processing fails the server will close
5527           the connection since it could be a malicious flooder.
5528
5529           Affected files lib/silccore/silcpacket.[ch], silcd/server.c.
5530
5531 Wed Dec 19 21:31:25 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5532
5533         * Make sure the warning about error opening a log file is
5534           printed only once and not everytime it fails (produces
5535           too much useless log).  Affected file lib/silcutil/silclog.c.
5536
5537 Wed Dec 19 18:21:51 CET 2001  Johnny Mnemonic <johnny@themnemonic.org>
5538
5539         * Made the silc_server_daemonise() function more readable.
5540           Affected file silcd/server.c.
5541
5542         * Pid file is now optional, the user may comment it out from
5543           the config file. Removed define SILC_SERVER_PID_FILE, we
5544           don't need a default any longer.  Affected file
5545           configure.in.pre, lib/Makefile.am.pre.
5546
5547         * Make some use of the pid file. The server now dies at startup
5548           if it detects a valid pid file on his path. The server would
5549           die anyway in this circumstance, because of the bind() failure.
5550           Affected file silcd/silcd.c.
5551
5552         * No longer compiling lib/dotconf.
5553
5554 Mon Dec 17 18:24:27 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5555
5556         * Fixed JOIN command parsing not to crash.  Affected file
5557           lib/silcclient/command.c.
5558
5559         * Fied the NICK_CHANGE notify to add the new client entry
5560           even it is resolved.  This removes an <[unknown]> nick
5561           thingy bug in the client.  Affected file is
5562           lib/silcclient/client_notify.c.
5563
5564         * Do not try to allocate 0 bytes (efence does not like it)
5565           in lib/silccore/silccomand.c when encoding payload.
5566
5567         * Do not take IRCNICK as nickname in Irssi SILC client since
5568           it is not possible to set nickname before hand connecting
5569           the server (TODO has an entry about adding auto-nicking
5570           support).
5571
5572         * Changed the silc_server_command_pending to check whether
5573           there already exists an pending entry with the specified
5574           command, command identifier and pending callback.  This is
5575           to fix IDENTIFY and WHOIS related crashes that may register
5576           multiple pending commands with same identifier.  Affected
5577           file silcd/command.c.
5578
5579         * Fixed the server to reconnect to the router even if it
5580           was already reconnecting and EOF was received.  This to
5581           fix a possibility that the server wouldn't ever try to
5582           auto-reconnect to the router.  Affected file silcd/server.c.
5583
5584 Sat Dec 15 20:31:50 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5585
5586         * Fixed the server's password authentication to use the
5587           length of the locally saved password, and not the one
5588           sent in the packet.  Affected file silcd/protocol.c.
5589
5590         * Fixed same password authentication problem in the
5591           Authentication Payload handling routines in
5592           lib/silccore/silcauth.c.
5593
5594         * Yet another password authentication problem fixed with
5595           channel password handling in silcd/command.c.
5596
5597 Mon Dec 10 19:57:40 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5598
5599         * If first character of string in silc_parse_userfqdn is '@'
5600           then do not parse it.  Affected file is
5601           lib/silcutil/silcutil.c.
5602
5603 Sun Dec  9 22:18:50 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5604
5605         * Fixed minor bug in IDENTIFY command reply sending, which
5606           caused various weird problems during JOIN when it was
5607           resolving names for users.  Affected file silcd/command.c.
5608
5609 Sun Dec  9 19:18:41 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5610
5611         * Fixed the IDENTIFY command reply sending to chech better valid
5612           clients.  It was possible to send incomplete list of replies.
5613           Affected file silcd/command.c.
5614
5615 Sat Dec  8 15:58:31 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5616
5617         * Added silc_client_command[s]_[un]register functions now to
5618           dynamically register the commands in client library.  Removed
5619           the static table of commands.  This allows the client library
5620           to call commands without causing the application to know about
5621           what commands library has called.
5622
5623           Removed the INFO command reply kludge to detect when the command
5624           was called by library.  Now library use its own command reply
5625           function for INFO command.
5626
5627           Added function silc_client_command_call to call a command.
5628           Application can use it to call command, not access the structure
5629           directly.
5630
5631           Now all commands that are sent by the client library (not
5632           explicitly sent by application) use own command reply functions.
5633
5634           Affected files around lib/silcclient/ and in
5635           irssi/src/silc/core/.
5636
5637         * Fixed the WHOIS command reply sending to chech better valid
5638           clients.  It was possible to send incomplete list of replies.
5639
5640           Fixed the WHOIS and IDENTIFY to send the request to router
5641           if normal server did not do it and did not find any results.
5642
5643           Affected file silcd/command.c.
5644
5645 Thu Dec  6 17:21:06 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5646
5647         * Moved the internal data from SilcClient context into its
5648           own file, not accesible to application.  Affected files
5649           lib/silcclient/client.h and lib/silcclient/client_internal.h,
5650           and other files in client library.
5651
5652 Thu Dec  6 10:37:55 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5653
5654         * Added doc/examples installation target in Makefile.am.pre.
5655           A patch by salo.
5656
5657 Tue Dec  4 17:43:19 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5658
5659         * If NO_SUCH_CLIENT_ID notify is received for WHOIS or IDENTIFY
5660           commands the found client entry will be removed from the
5661           cache, after notifying application about the error.  Affected
5662           file lib/silcclient/command_reply.c.
5663
5664         * Changed the /MSG to check for exact nickname user gave, and
5665           not let `nick' match `nick@host' if it is only one found.  Now,
5666           user must type the exact nickname (like nick@host2) even if
5667           there are no more than one same nicks found.  This is to avoid
5668           a possibility of sending nickname to wrong nickname since
5669           `nick' could match `nick@host'.  Affected file is
5670           irssi/src/core/silc-servers.c.
5671
5672 Mon Dec  3 18:49:45 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5673
5674         * Do not print "you are now server operator" or similar when
5675           giving /away command.  Affected files are
5676           irssi/src/silc/core/client_ops.c, silc-servers.h.
5677
5678         * Made the silc_server_command_pending_error_check to send
5679           the same command reply payload it received back to the
5680           original sender of the command.  This way all arguments
5681           that was received by the server will be received by the
5682           client too.  Affected file silcd/command.c.
5683
5684         * Added the silc_idcache_add to return the created cache entry
5685           to a pointer.  Affected file lib/silccore/silcidcache.[ch].
5686
5687         * Add global clients to expire if they are not on any channel.
5688           This is because normal server will never know if they signoff
5689           if they are not on any channel.  The cache expiry will take
5690           case of these entries.  This is done by normal servers only.
5691           The affected files are silcd/command_reply.c,
5692           silcd/idlist.[ch], silcd/server and silcd/packet_receive.c.
5693
5694         * If server receives invalid ID notification for WHOIS or
5695           IDENTIFY and the ID exists in the lists, it is removed.
5696           Affected file silcd/command_reply.c.
5697
5698         * If NO_SUCH_CLIENT_ID is received for WHOIS or IDENTIFY command
5699           in client then client entry that it matches is searched and
5700           the nickname is printed on the screen for user.  Affected
5701           file irssi/src/silc/core/client_ops.c.
5702
5703 Mon Dec  3 11:56:59 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5704
5705         * Use cache entry expire time in the LIST command reply to
5706           purge old entries from the cache after the LIST command
5707           reply has been received.  This way we don't have non-existent
5708           entries in the cache for too long.  Affected file is
5709           silcd/command_reply.c.
5710
5711 Sun Dec  2 23:29:07 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5712
5713         * If we are normal server, and we've not resolved client info
5714           in WHOIS or IDENTIFY from router, and it is global client,
5715           we'll check whether it is on some channel.  If it is not
5716           then we cannot be sure about its validity and will resolve it
5717           from router.  Fixes a bug in WHOIS and IDENTIFY.  Affected
5718           file silcd/command.c.
5719
5720         * Search channel by name (if possible) rather than by ID
5721           in IDENTIFY command's command reply.  Affected file is
5722           silcd/command_reply.c.
5723
5724 Sun Dec  2 13:48:46 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5725
5726         * Distribute to the channel passphrase in CMODE_CHANGE notify.
5727           Updated specs and implemented it.  Affected file silcd/command.c,
5728           silcd/packet_send.c and silcd/packet_receive.c.
5729
5730         * Implemented the <founder auth> payload handling in the JOIN
5731           command.  If provided all conditions for channel joining
5732           except requirement to provide correct passphrase can be
5733           overrided by the channel founder.  Updated the protocol specs.
5734           Affected file silcd/command.c.
5735
5736           Added support for founder auth in JOIN command in client
5737           library.  Fixed the parsing of the JOIN command now to support
5738           all options as they should be.  The affected file is
5739           lib/silcclient/command.c.
5740
5741         * Optimized the WHOIS and IDENTIFY commands to send the request
5742           to router only if it includes nicknames or other names.  If
5743           they include only IDs then check the local cache first before
5744           routing.  Affected file is silcd/command.c.
5745
5746         * Added channels topic announcements.  Affected file is
5747           silcd/packet_receive.c and silcd/server.c.
5748
5749         * Fixed the silc_server_send_notify_topic_set to really destine
5750           the packet to channel.  Affected file silcd/packet_send.c.
5751
5752         * Fixed a crash in CHANNEL_CHANGE notify handling in the client
5753           library.  Affected file lib/silcclient/client_notify.c.
5754
5755         * Added UMODE announcements.  Affected file silcd/server.c.
5756
5757 Sat Dec  1 12:52:39 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5758
5759         * Memory leak fixes in:
5760
5761           lib/silcutil/silcsockconn.c
5762           lib/silcske/silcske.c
5763           lib/silcske/groups.c
5764           lib/silccrypt/rsa.c
5765           lib/silccrypt/silcpkcs.c
5766           lib/silccore/silccommand.c
5767           lib/silccore/silcidcache.c
5768           silcd/idlist.c
5769           silcd/packet_send.c
5770           silcd/command.c
5771
5772         * ROBOdoc documented the lib/silcske/groups.h file and a
5773           bit changed the interface for better.
5774
5775 Thu Nov 29 22:12:50 EET 2001  Pekka Riikonen <priikone@silcnet.org>'
5776
5777         * Update the client entry context in the ID cache after
5778           nick change.  Affected file lib/silcclient/command.c.
5779           Fixes the CUMODE command when regaining founder privileges,
5780           and a little WHOIS problem.
5781
5782         * Fixed silc_net_gethostbyname to correctly call the
5783           inet_ntop.  Affected file lib/silcutil/silcnet.c.
5784
5785 Thu Nov 29 19:31:23 EET 2001  Pekka Riikonen <priikone@silcnet.org>'
5786
5787         * Added IPv6 support checking to the configure.in.pre, added
5788           also --enable-ipv6 option to override the check.  Affected
5789           file configure.in.pre.
5790
5791         * The silc_thread_create now calls the start function
5792           directly if threads support is not compiled in.  Removes
5793           ugly #ifdef's from generic code.  Affected files are
5794           lib/silcutil/unix/silcunixthread, win32/silcwin32thread.c.
5795
5796         * Added silc_net_gethostby[name/addr]_async to asynchronously
5797           resolve.  Affected files are lib/silcutil/silcnet.[ch].
5798
5799         * Added support for rendering IPv6 based server, client and
5800           channel IDs.  Affected file lib/silcutil/silcutil.c.
5801
5802         * Added support for creating IPv6 based server IDs.  Affected
5803           file is silcd/serverid.c.
5804
5805 Wed Nov 28 23:46:09 EET 2001  Pekka Riikonen <priikone@silcnet.org>'
5806
5807         * Added silc_net_gethostby[addr/name] into the
5808           lib/silcutil/silcnet.[ch].  Added IPv6 support to Unix network
5809           routines.  Added silc_net_is_ip[4/6].  Affected file is
5810           lib/silcutil/unix/silcunixnet.c.  All routines that take
5811           address as argument now supports both IPv4 and IPv6 addresses.
5812
5813 Mon Nov 26 18:09:48 EET 2001  Pekka Riikonen <priikone@silcnet.org>'
5814
5815         * Fixed LIST command reply sending in server.  Affected file
5816           silcd/command.c.
5817
5818         * Server now sends the kicker's client ID in the KICK notify
5819           to the kicked client.  Affected file silcd/command.c.
5820
5821         * The client library now parses the kickers client ID and
5822           UI displays it.  Affected files lib/silcclient/client_notify.c
5823           and irssi/src/silc/core/silc-channels.c, module-formats.c.
5824
5825         * Made all payload parsing function prototypes consistent.
5826           They all take now const unsigned char * and uint32 pair as
5827           the payload data instead of SilcBuffer.  Changes all around
5828           the source tree.  Other unsigned char* -> const unsigned char*
5829           changes around the tree as well.
5830
5831         * Optimized SFTP client and server packet sending not to
5832           allocate new buffer for each packet but to recycle the
5833           first allocated buffer.  Affected files are
5834           lib/silcsftp/sftp_client.c, sftp_server.c, sftp_util.[ch].
5835
5836         * Optimized the SFTP client to use SilcList instead of
5837           SilcDList for requests, because it is faster.  Affected file
5838           is lib/silcsftp/sftp_client.c.
5839
5840         * Moved the ID Payload routines from lib/silccore/silcpayload.[ch]
5841           into lib/silccore/silcid.[ch].
5842
5843           Renamed silcpayload.[ch] into silcargument.[ch].
5844
5845 Mon Nov 26 15:01:53 CET 2001  Pekka Riikonen <priikone@silcnet.org>
5846
5847         * If client entry is deleted with active key agreement
5848           session, abort the session.
5849
5850           The silc_client_abort_key_agreement now calls the completion
5851           callback with new SILC_KEY_AGREEMENT_ABORTED status.
5852
5853           Affected file lib/silcclient/silcapi.h, client_keyagr.c and
5854           idlist.c.
5855
5856 Sun Nov 25 18:01:45 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5857
5858         * Don't use __restrict in older GCC's.  Affected file is
5859           lib/silcmath/mpi/mpi-priv.h.  A patch by salo.
5860
5861         * silc_net_localhost now attempts to reverse lookup the
5862           IP/hostname.  Affected file lib/silcutil/silcnet.c.
5863
5864         * Defined <founder auth> argument to the SILC_COMMAND_JOIN
5865           command.  It can be used to gain founder privileges at
5866           the same time when joining the channel.
5867
5868           Defined that the SILC_NOTIFY_TYPE_KICKED send the
5869           kicker's client ID as well.  Updated protocol specs.
5870
5871           Defined that the server must send SILC_COMMAND_IDENTIFY
5872           command reply with error status to client who sent
5873           private message with invalid client ID.
5874
5875           Updated the protocol specification.
5876
5877         * Added silc_server_send_command_reply to send any
5878           command reply.  Affected file silcd/packet_send.[ch].
5879
5880         * Added silc_id_payload_encode_data to encode ID payload
5881           from raw ID data.  Affected file lib/silccore/silcpayload.[ch].
5882
5883         * The server now send IDENTIFY command reply with error
5884           status if client ID in private message is invalid.  Affected
5885           file silcd/packet_receive.c.
5886
5887         * Save the server key file with server's IP address in
5888           the filename instead of hostname.  The affected file is
5889           irssi/src/silc/core/client_ops.c.
5890
5891 Sat Nov 24 20:08:22 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5892
5893         * Typo fixes in irssi/src/fe-common/silc/module-formats.c.
5894           A patch by Sunfall.
5895
5896         * Added libtool support for compiling shared objects in
5897           lib/silcsim.  Affected file configure.in.pre and
5898           lib/silcsim/Makefile.am.  Original patch by cras.
5899
5900 Fri Nov 23 23:30:59 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5901
5902         * Pid file configuration, and server's config file fixes
5903           patch by toma.  Updated CREDITS file.
5904
5905 Sun Nov 18 01:34:41 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5906
5907         * Fixed silc_client_channel_message to not try to decrypt
5908           the message twice if it resolved the destination client
5909           information.  This could cause of dropping one channel
5910           message.  Affected file lib/silcclient/client_channel.c.
5911
5912 Wed Nov 14 23:44:56 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5913
5914         * Added silc_client_run_one into lib/silcclient/silcapi.h and
5915           lib/silcclient/client.c. This function is used when the SILC
5916           Client is run under some other scheduler, or event loop or
5917           main loop.  On GUI applications, for example this may be
5918           desired to used to run the client under the GUI application's
5919           main loop.  Typically the GUI application would register an
5920           idle task that calls this function multiple times in a second
5921           to quickly process the SILC specific data.
5922
5923 Wed Nov 14 19:16:52 CET 2001  Johnny Mnemonic <johnny@themnemonic.org>
5924
5925         * Fixed silc_server_drop() for dropping the supplementary
5926           groups as well, this could cause a security hole on some
5927           systems.
5928
5929 Wed Nov 14 16:22:25 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5930
5931         * __pid_t -> pid_t in lib/silccrypt/silcrng.c.  A patch by
5932           johnny.
5933
5934         * Write PID file after dropping privileges.  Added -F option
5935           to run server on foreground.  A patch by debolaz.
5936           Affected files silcd/server.c, silcd/silcd.c.
5937
5938         * Fixed MOTD to return the MOTD file server name.  Affected
5939           file silcd/command.c.
5940
5941         * Added INFO command reply handling to the Irssi SILC Client.
5942           Affected file irssi/src/silc/core/client_ops.c.
5943
5944 Wed Nov 14 00:18:08 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5945
5946         * Fixed the silc_idcache_list_* routines to really support
5947           the dynamic list.  Fixes a crash.  Affected file is
5948           lib/silccore/silcidcache.c.
5949
5950         * Fixed the LIST command reply to really call LIST command's
5951           pending callbacks.  Affected file silcd/command_reply.c.
5952
5953 Tue Nov 13 00:49:17 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5954
5955         * Update conn->local_entry->nickname after giving NICK
5956           command.  Affected file lib/silcclient/command.c.
5957
5958 Sun Nov 11 23:43:02 PST 2001  Brian Costello <bc@wpfr.org>
5959
5960         * Added the [pid] option to the silcd configuration file
5961
5962           Affected files: serverconfig.[ch] and silcd.c
5963
5964 Sun Nov 11 23:56:39 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5965
5966         * Save fingerprint in WHOIS command reply in server.
5967           Affected file silcd/command_reply.c.
5968
5969         * Fixed NICK commands pending callback registration.
5970           Affected file lib/silcclient/command.c.
5971
5972 Sun Nov 11 10:49:10 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5973
5974         * Use ++server->cmd_ident when sending commands in server,
5975           instead of random number.  Affected file silcd/command.c.
5976
5977         * Fixed GETKEY command reply to call actually GETKEY pending
5978           command callbacks.  Affected file silcd/command_reply.c.
5979
5980         * A bit stricter check for nicknames.  Check for same nickname
5981           in NICK command also.  Affected file silcd/command.c.
5982
5983         * Do not call INFO command everytime client ID changes, only
5984           during first connecting.  Affected file lib/silcclient/client.c.
5985
5986         * Set the new nickname only after successful command reply for
5987           NICK command is returned by server.  Affected file
5988           lib/silcclient/command.c.
5989
5990         * Remove nicknames from nicklist during server_signoff notify.
5991           Should fix /NAMES bit more.  The affected file is
5992           irssi/src/silc/core/silc-channels.c.
5993
5994         * Added `fingerprint' field to the SilcIDListData in the
5995           silcd/idlist.h to hold the fingerprint of the client's
5996           public key.
5997
5998           Send the fingerprint of the client's public key in WHOIS
5999           command reply.
6000
6001           Affected files silcd/command.c, and silcd/idlist.[ch].
6002
6003         * Added silc_fingerprint into lib/silcutil/silcutil.[ch] to
6004           create fingerprint from given data.
6005
6006         * Show the fingerprint of the client's public key in WHOIS.
6007           Affected files irssi/src/module-formats.[ch] and
6008           irssi/src/silc/core/client_ops.c.
6009
6010         * Format the multiple same nicknames also during JOIN and
6011           NICK_CHANGE notifys.  Affected file is
6012           lib/silcclient/client_notify.c.
6013
6014         * Do not print error on screen for invalid private message
6015           payload since it can come if someone is sending private
6016           messages with wrong key.  Affected file
6017           lib/silccore/silcprivate.c.
6018
6019         * Fixed multiple concurrent /PING crash.  Affected file
6020           lib/silcclient/command.c.
6021
6022         * Changed the wrong ID encoding.  All IP addresses must be
6023           in MSB first order in encoded format.  They were encoded
6024           wrong and was in LSB format.  Affected files are
6025           silcd/serverid.c, lib/silcutil/silcutil.c.
6026
6027         * Remove silc_net_addr2bin_ne from lib/silcutil/silcnet.[ch].
6028
6029         * Call the `connect' client operation through the scheduler
6030           in case of error.  Affected file lib/silcclient/client.c.
6031
6032         * Call the `failure' client operation even if the error
6033           occurred locally during a protocol.  Affected file is
6034           lib/silcclient/protocol.c.
6035
6036         * Added support of sending LIST command to router from normal
6037           server.  This way normal server can get list of all channels
6038           in the network too.  Fixed the channel list sending in the
6039           server too.  Affected files are silcd/command.c, and
6040           silcd/command_reply.[ch].
6041
6042         * Added silc_server_update_channels_by_server and
6043           silc_server_remove_channels_by_server.  They are used during
6044           disconnection of primary router and in backup router protocol.
6045           Affected file silcd/server_util.[ch], silcd/server.c and
6046           silcd/server_backup.c.
6047
6048         * Fixed channel adding to global list in IDENTIFY command
6049           reply in server.  Affected file silcd/command_reply.c.
6050
6051 Sat Nov 10 21:39:22 EET 2001  Pekka Riikonen <priikone@silcnet.org>
6052
6053         * If the incoming packet type is REKEY or REKEY_DONE process
6054           that packet always synchronously.  Fixes yet another MAC
6055           failed error on slow (dialup) connections.  Affected file
6056           lib/silcclient/client.c and silcd/server.c.
6057
6058 Thu Nov  8 22:21:09 EET 2001  Pekka Riikonen <priikone@silcnet.org>
6059
6060         * Call check_version SKE callback for initiator too.  Affected
6061           file lib/silcske/silcske.c.
6062
6063         * Implemented fix for security hole found in the SKE that was
6064           fixed in the specification few days back; the initiator's
6065           public key is now added to the HASH value computation.
6066           Added backwards support for the old way of doing it too, for
6067           old clients and old servers.  Affected file is
6068           lib/silcske/silcske.c.
6069
6070         * Enabled mutual authentication by default in SKE.  If initiator
6071           is not providing mutual authentication the responder will
6072           force it.  This will provide the proof of posession of the
6073           private key for responder.  The affected files are
6074           lib/silcclient/protocol.c and silcd/protocol.c.
6075
6076         * Do not cache anymore the server's public key during SKE.
6077           We do mutual authentication so the proof of posession of
6078           private key is done, and if the server is authenticated in
6079           conn auth protocol with public key we must have the public
6080           key already.  Affected file silcd/protocol.c.
6081
6082         * Added new global debug variable: silc_debug_hexdump.  If
6083           it is set to TRUE SILC_LOG_HEXDUMP will be printed.  Affected
6084           file lib/silcutil/silclog.[ch].
6085
6086         * Fixed compilation warning due to char * -> const char *.
6087           Affected files lib/silcutil/silcnet.h, and
6088           lib/silccore/silcauth.[ch].
6089
6090 Wed Nov  7 20:43:03 EET 2001  Pekka Riikonen <priikone@silcnet.org>
6091
6092         * Fixed CMODE command when new channel key was created.  If
6093           the creation failed the old key was removed.  Next time giving
6094           same command would crash the server since the old key was
6095           freed already.  Affected file silcd/command.c.
6096
6097         * Fixed the silc_server_announce_get_channels to not crash
6098           on reconnect.  Affected file silcd/server.c.
6099
6100 Wed Nov  7 17:15:07 EET 2001  Pekka Riikonen <priikone@silcnet.org>
6101
6102         * Added silc_log_set_debug_string function to set a regex
6103           string to match for debug output.  Only the function names,
6104           or filenames matching the given debug string is actually
6105           printed.  This way it is possible to filter out those debug
6106           strings that user is not interested in.
6107
6108           Fixed a bug in silc_string_regexify.
6109
6110           Affected files lib/silcutil/silclog.[ch], and
6111           lib/silcutil/unix/silcunixutil.c.
6112
6113         * Changed the -d options in both server and Irssi SILC client
6114           to take the debug string as argument.  Affected files
6115           silcd/silcd.c and irssi/src/silc/core/silc-core.c.
6116
6117 Tue Nov  6 21:31:54 EET 2001  Pekka Riikonen <priikone@silcnet.org>
6118
6119         * Added silc_hash_babbleprint to create a Bubble Babble
6120           Encoded fingerprint.  The encoding is developed by Antti
6121           Huima (draft-huima-babble-01.txt), and it creates human
6122           readable strings out of binary data.  Affected file
6123           lib/silccrypt/silchash.[ch].
6124
6125         * Print the babble print now in addition of fingerprint as well
6126           in Irssi SILC client.  Affected files are
6127           irssi/src/fe-common/silc/module-formats.[ch],
6128           irssi/src/fe-common/silc/core/client_ops.c.
6129
6130 Sun Nov  4 23:37:28 EET 2001  Pekka Riikonen <priikone@silcnet.org>
6131
6132         * Fixed a security problem found in SKE.  The initiator's
6133           public key too is now added to the HASH hash value creation
6134           which is signed by the responder to create the SIGN value.
6135           This will prevent anyone in the middle to lie to the responder
6136           about the initiator's public key.  If this is done now, the
6137           man in the middle will get caught.  Updated the protocol
6138           specification.
6139
6140 Sun Nov  4 11:43:53 EET 2001  Pekka Riikonen <priikone@silcnet.org>
6141
6142         * Better installation directory handling.  Configure module
6143           paths and other paths automatically to example_silc* files
6144           in doc/.  A patch by toma.
6145
6146         * Fixed compiler warning from MPI library, and from SILC RNG.
6147           A patch by johnny.
6148
6149         * Added SILC_SERVER_PID_FILE to define the pid file for server.
6150           It can be configured with ./configure.  A patch by toma.
6151
6152 Sat Nov  3 23:48:23 EET 2001  Pekka Riikonen <priikone@silcnet.org>
6153
6154         * Find correct make to use in prepare-clean.  A patch by
6155           toma.  Affected file prepare-clean.
6156
6157 Sat Nov  3 22:04:00 PST 2001  Brian Costello <bc@mksecure.com>
6158
6159         * Added irssi variables use_auto_addr, auto_bind_ip,
6160           auto_bind_port and auto_public_ip.
6161
6162         * Changed the interface for silc_client_send_key_agreement
6163           in lib/silcclient/silcapi.h
6164
6165         Affected files:
6166
6167          irssi/src/silc/core/silc-core.c
6168          irssi/config
6169          lib/silcclient/silcapi.h
6170          irssi/src/silc/core/silc-channels.c
6171          lib/silcclient/client_keyagr.c
6172          irssi/docs/help/key
6173
6174 Sat Nov  3 17:48:55 EET 2001  Pekka Riikonen <priikone@silcnet.org>
6175
6176         * Added silc_pkcs_public_key_compare to compare two
6177           public keys.  Affected file lib/silccrypt/silcpkcs.[ch].
6178
6179         * Check that the client who set the founder mode on the
6180           channel is the same client that is giving the founder
6181           mode to itself.  It is done by comparing the saved public
6182           key (it is saved even in the authentication is passphrase).
6183           Affected file silcd/command.c.
6184
6185 Fri Nov  2 18:52:08 EST 2001  Pekka Riikonen <priikone@silcnet.org>
6186
6187         * Do not process packet for disconnected socket connection.
6188           Affected file lib/silccore/silcpacket.c.
6189
6190         * Process the DISCONNECT packet through scheduler in the
6191           client library.  Affected file lib/silcclient/client.c.
6192
6193         * Fixed the silc_client_packet_parse to not to increase
6194           the packet sequence number if the conn->sock and the
6195           current socket connection is not same.  This can happen
6196           for example during key agreement when the conn includes
6197           multiple socket connections (listeners).  Affected file
6198           lib/silcclient/client.c.
6199
6200         * The sender of the file transfer request now provides also
6201           the pointer (listener) for the key exchange protocol.  If
6202           the listener cannot be created then it sends empty key
6203           agreement and lets the receiver provide the listener.
6204
6205           Added `local_ip' and `local_port' arguments to the
6206           silc_client_file_send.  If they are provided they are used,
6207           if not then it will attempt to find local IP address, if
6208           not found or bind fails then the remote client will provide
6209           the listener.
6210
6211           Affected files are lib/silcclient/client_ftp.c and
6212           lib/silcclient/silcapi.h.
6213
6214         * Extended the FILE SEND command to support defining the
6215           local IP and port for key exchange listener.  They are
6216           optional.  Affected file irssi/src/silc/core/silc-servers.c.
6217
6218 Thu Nov  1 22:10:07 EST 2001  Pekka Riikonen <priikone@silcnet.org>
6219
6220         * Defined to WHOIS command reply the sending of fingerprint
6221           of the client's public key (if the proof of posession of the
6222           corresponding private key is verified by the server).
6223           Updated to the protocol specification.
6224
6225         * Added support of receiving the client's public key's
6226           fingerprint in command reply in client library.  Affected
6227           file is lib/silcclient/command_reply.c, and
6228           lib/silcclient/idlist.[ch].
6229
6230 Thu Nov  1 18:06:12 EST 2001  Pekka Riikonen <priikone@silcnet.org>
6231
6232         * Do not send over 128 chars long nickname to the server
6233           in NICK command.  Affected file lib/silcclient/command.c.
6234
6235         * Do not send over 256 chars long channel names to the server
6236           in JOIN command.  Affected file lib/silcclient/command.c.
6237
6238 Tue Oct 30 22:48:59 EST 2001  Pekka Riikonen <priikone@silcnet.org>
6239
6240         * Assure that silc_server_close_connection cannot be called
6241           twice for same socket context.  Affected file is
6242           silcd/server.c.
6243
6244 Tue Oct 30 16:58:14 EST 2001  Pekka Riikonen <priikone@silcnet.org>
6245
6246         * Send error message to application if opening file for
6247           writing during file transfer fails.  Affected file is
6248           lib/silcclient/client_ftp.c.
6249
6250           Remove all file transfer sessions for a client that we're
6251           removing from ID cache.
6252
6253           Affected file is lib/silcclient/client_ftp.c.
6254
6255         * Fixed silc_net_addr2bin to return correct address.  Affected
6256           file lib/silcutil/[unix/win32]/silc[unix/win32]net.c.
6257
6258         * Fixed file transfer session removing on signoff notify.
6259           Affected file irssi/src/silc/core/silc-servers.c.
6260
6261         * Added the SilcClientFileError to be returned in the monitor
6262           callback.  Added NO_SUCH_FILE and PERMISSION_DENIED errors.
6263           Affected file lib/silcclient/silcapi.h.
6264
6265 Mon Oct 29 17:43:04 EST 2001  Pekka Riikonen <priikone@silcnet.org>
6266
6267         * Fixed a crash in silc_client_ftp_free_sessions and
6268           silc_client_ftp_session_free_client.  Affected file
6269           lib/silcclient/client_ftp.c.
6270
6271         * Added `disabled' field in the SilcChannelEntry in the server
6272           to indicate if the server entry is disabled.  Affected file
6273           silcd/idlist.h, silcd/command[_reply].c.
6274
6275         * SILC server adds now /var/run/silcd.pid everytime it is
6276           started.  Affected file silcd/silcd.c.
6277
6278         * Added silc_server_packet_send_clients to send a packet to
6279           the provided table of client entries.  Affected file
6280           silcd/packet_send.[ch].
6281
6282         * Fixed a crash in client resolving in client_prvmsg.c in
6283           client library.  Affected file lib/silcclient/client_prvmsg.c.
6284
6285         * Do not actually remove the client directly from ID cache
6286           during SERVER_SIGNOFF, but invalidate it.  This way we
6287           preserve the WHOWAS info for the client.  Affected file
6288           silcd/server_util.c.
6289
6290         * Fixed SERVER_SIGNOFF notify handling in the server.  The
6291           server is now able to process incoming SERVER_SIGNOFF notify
6292           for a server that it doesn't even know about.  It will remove
6293           the clients provided in the notify.  Affected file
6294           silcd/packet_receive.c.
6295
6296         * Check for partial packet in data queue after every packet that
6297           was found from the queue.  Return and wait for more data if
6298           there is partial data in queue.  Affected file is
6299           lib/silccore/silcpacket.c.
6300
6301 Sun Oct 28 18:46:27 EST 2001  Pekka Riikonen <priikone@silcnet.org>
6302
6303         * Added SilcClietFileError enum to indicate error in
6304           file transfer.  Added SILC_CLIENT_FILE_MONITOR_KEY_AGREEMENT
6305           and SILC_CLIENT_FILE_MONITOR_ERROR new monitor statuses.
6306           Affected files lib/silcclient/silcapi.h and
6307           lib/silcclient/client_ftp.c.
6308
6309         * Check that newsize in silc_buffer_realloc is larger than
6310           the old buffer's size.  Affected file lib/silcutil/silcbufutil.h.
6311
6312         * Added better monitor of file transfers.  It now monitors
6313           key agreement protocol during the file transfer too.  Added
6314           error reporting too.  Affected files
6315           irssi/src/silc/core/silc-servers.c,
6316           irssi/src/fe-common/silc/module-formats.[ch].
6317
6318         * Wrote a help file for FILE command.
6319
6320         * Added silc_rng_global_get_byte_fast to get not-so-secure
6321           random data as fast as possible.  Random data is read from
6322           /dev/urandom if available and from the SILC RNG if not
6323           available.  It is used in padding generation.  Affected file
6324           lib/silccrypt/silcrng.[ch].
6325
6326         * All packets in client library are now processed synchronously.
6327           Optimized packet processing a lot.  Affected file
6328           lib/silcclient/client.c.
6329
6330         * All server connection packets are processing synchronously
6331           now in server, to optimize packet processing.  Affected file
6332           silcd/server.c.
6333
6334         * Include files are installed now only in Toolkit distribution
6335           if make install is given.  Affected files: all Makefile.am's.
6336
6337 Thu Oct 25 22:44:06 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
6338
6339         * Assure that silc_client_notify_by_server_resolve does not
6340           resolve the client information multiple times.  If it cannot
6341           be found by the first it cannot be found at all.  Affected
6342           file lib/silcclient/client_notify.c.
6343
6344         * Fixed WHOWAS command reply calling.  Affected file
6345           lib/silcclient/command_reply.c.
6346
6347         * Removed all references to silc_idlist_get_client from the
6348           Irssi SILC client since that call is internal call used by
6349           the library.  The Irssi SILC client will use now client
6350           retrieval functions found in silcapi.h.
6351
6352         * Fixed a bug in resolving nickname info before sending
6353           private message.  It used freed memory.  Affected file
6354           irssi/src/silc/core/silc-servers.c.
6355
6356 Thu Oct 25 19:04:49 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
6357
6358         * Assure my_channels statistics cannot go negative in server.
6359           Affected files silcd/server.c, silcd/server_util.c.
6360
6361 Wed Oct 24 19:53:05 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
6362
6363         * Upgraded dotconf 1.0.2 to 1.0.6 in lib/dotconf.
6364
6365 Tue Oct 23 13:51:19 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6366
6367         * Win32 Toolkit changes.  Affected files
6368           win32/silc.dsw, win32/libsilc/libsilc.def,
6369           win32/libsilcclient/libsilc.def,
6370           lib/silcutil/silcutil.c, and
6371           lib/sftp/sftp_fs_memory.c.
6372
6373 Mon Oct 22 16:35:05 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
6374
6375         * Added silc_net_localip to return local host's IP address.
6376           Affected file lib/silcutil/silcnet.[ch].
6377
6378         * If key exchange or rekey protocol is active for a connection
6379           parse all packets syncronously since there might be packets
6380           in packet queue that we are not able to process without first
6381           processing packets before them.  Affected file silcd/server,
6382           lib/silcclient/client.c.
6383
6384         * SilcPacketParserCallback now returns TRUE or FALSE to indicate
6385           whether library should continue processing the packet.
6386           Affected file lib/silccore/silcpacket.h.
6387
6388         * Added SilcSFTPMonitor callback, SilcSFTPMonitors and
6389           SilcSFTPMonitorData to SFTP server to monitor various
6390           SFTP client requests.  Affected file lib/silcsftp/silcsftp.h,
6391           lib/silcsftp/sftp_server.c.
6392
6393         * Added silc_file_size to return file size.  Affected file
6394           lib/silcutil/silcutil.[ch].
6395
6396         * Implemented the file transfer support for the client library.
6397           Added preliminary support for simple client to client one-file
6398           transmission.  Affected file lib/silcclient/client_ftp.c,
6399           lib/silccilent/client.[ch].
6400
6401         * Added new local command FILE to the Irssi SILC Client.
6402           It is used to perform the file transfer.  It has subcommands
6403           SEND, RECEIVE, SHOW and CLOSE.  Affected files
6404           irssi/src/silc/core/client_ops.c,
6405           irssi/src/silc/core/silc-server.[ch].
6406
6407 Mon Oct 22 12:50:08 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
6408
6409         * Relay the SILC_PACKET_FTP in the server.  Affected files
6410           silcd/server.c and silcd/packet_receive.c.
6411
6412 Sun Oct 21 20:21:02 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
6413
6414         * Renamed silc_file_read and silc_file_write to functions
6415           silc_file_readfile and silc_file_writefile.  Added function
6416           silc_file_open and silc_file_close.  Affected files
6417           lib/silcutil/silcutil.[ch].
6418
6419 Thu Oct 18 20:58:13 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
6420
6421         * Resolve the client info when received private message or
6422           channel message for a client which nickname we don't know.
6423           Affected files lib/silcclient/client_prvmsg.c and
6424           lib/silcclient/client_channel.c.
6425
6426         * Do not crash in /KEY if client is not connected.  Affected
6427           file irssi/src/silc/core/silc-channels.c.
6428
6429         * Added SilcClientStatus field to the SilcClientEntry in the
6430           lib/silcclient/idlist.h.
6431
6432           Added SILC_CLIENT_STATUS_RESOLVING to mark that the entry
6433           is incomplete and is being resolved, it won't be resolved
6434           twice.
6435
6436           Make sure also that USERS command reply does not resolve
6437           twice information.  Affected file is
6438           lib/silcclient/command_reply.c.
6439
6440           Make sure that silc_client_get_clients_by_list does not
6441           resolve twice same information.
6442
6443         * Check for valid client->id in the silc_server_free_client_data.
6444           Affected file silcd/server.c.
6445
6446         * Fixed /GETKEY nick@server not to crash if the server entry
6447           is not found.  Affected file lib/silcclient/command.c.
6448
6449         * Fixed the silc_server_check_cmode_rights to check the
6450           requested modes correctly.  Affected file silcd/command.c.
6451
6452 Thu Oct 18 12:10:22 CEST 2001  Pekka Riikonen <priikone@silcnet.org>
6453
6454         * Better checks for non-printable chars in nick added.
6455           Affected file silcd/command.c.
6456
6457 Thu Oct 18 09:18:58 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
6458
6459         * Call the silc_server_udpate_servers_by_server in the
6460           primary router that comes back online in the backup resuming
6461           protocol.  Otherwise it routes packets wrong.  Affected file
6462           silcd/server_util.[ch], silcd/server_backup.c.
6463
6464 Wed Oct 17 16:51:18 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
6465
6466         * Added SILC_STR_UI8_[N]STRING[_ALLOC] formats to the
6467           lib/silcutil/silcbuffmt.[ch].
6468
6469         * Redefined the SILC packet header to include the padding
6470           length.  Affected file lib/silccore/silcpacket.[ch].
6471
6472         * Added SILC_PACKET_PADLEN_MAX macro to return the padding
6473           length for maximum padding up to 128 bytes).  Affected
6474           file lib/silccore/silcpacket.h.
6475
6476         * Removed all backwards support for old 0.5.x MAC thingies.
6477           The SILC packet header change makes it impossible to be
6478           backwards compatible.
6479
6480         * Send the ENDING packet with timeout in the backup resuming
6481           protocol.  This is to assure that all routers has connected
6482           to the primary router.  Affected file silcd/server_backup.c.
6483
6484         * Changed the RNG to take the first IV from random data.  It
6485           used to take it from zero actually.  Changed the RNG also
6486           to use /dev/urandom during session.  /dev/random is used
6487           in initialization.  Affected file lib/silccrypt/silcrng.[ch].
6488
6489 Tue Oct 16 20:45:49 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
6490
6491         * Changed the SILC packet header to have the first two bytes
6492           (the packet length) encrypted.  Affected files aroung the
6493           code tree, lib/silccore/silcpacket.[ch].  Removed the
6494           SilcPacketCheckDecrypt callback.  It is not needed anymore
6495           since the silc_packet_receive_process will determine now
6496           whether the packet is normal or special.
6497
6498         * Implemented the unidirectional MAC keys.  Affected files
6499           lib/silcske/silcske.c, silcd/protocol.c and
6500           lib/silcclient/protocol.c.
6501
6502         * Implemented the packet sequence number to the MAC computation.
6503           Affected files lib/silccore/silcpacket.c, silcd/protocol.c,
6504           silcd/packet_send.c, silcd/server.c, lib/silcclient/client.c,
6505           lib/silcclient/protocol.c.
6506
6507 Mon Oct 15 17:42:55 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
6508
6509         * Allow backup router to announce servers.  All servers
6510           announced by backup router are added to the global list
6511           automatically.  Update hte server's socket to our primary
6512           router also when backup router announces a server.
6513           Affected file silcd/packet_receive.c.
6514
6515         * Do not update the client->router in the function
6516           silc_server_udpate_clients_by_server if the client is on
6517           global list.  We might fail to find any specific server
6518           for locally connected clients and local cell clients.  They
6519           should still use the `from' and not `to' as client->router.
6520           This fixes backup router resuming protocol.  Affected file
6521           silcd/server_util.c.
6522
6523         * Decrease channel statistics count only if the channel
6524           deletion worked.  Affected files are silcd/server.c and
6525           silcd/server_util.c.
6526
6527         * Added silc_server_update_servers_by_server to update origin
6528           of all server entries.  Used during backup router protocol.
6529           Affected files silcd/server_util.[ch], silcd/server.c. and
6530           silcd/backup_router.c.
6531
6532         * ROBODoc documented the lib/silccrypt/silchmac.h.  Added new
6533           function silc_hmac_init, silc_hmac_update, silc_hmac_final,
6534           silc_hmac_get_hash and silc_hmac_get_name.  Affected file
6535           lib/silccrypt/silchmac.c.
6536
6537 Sun Oct 14 18:28:22 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
6538
6539         * Assure that router cannot reroute the same channel message
6540           to the sender.  Affected file silcd/packet_receive.c.
6541
6542 Sat Oct 13 12:46:18 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
6543
6544         * Made better checks that the channel message is not sent
6545           to the router it came from.  Affected file is
6546           silcd/packet_send.c.  Fixed memory leak too.
6547
6548         * Announce informations for incoming router connection, but
6549           only after checking if it is replaced by backup router.
6550           Affected file silcd/packet_receive.c.
6551
6552 Fri Oct 12 18:37:24 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
6553
6554         * Fixed the backup resuming protocol to work in multiple
6555           router environment.  Affected file silcd/server_backup.c.
6556
6557         * Route packet only to one router in the function
6558           silc_server_packet_send_to_channel.  Affected file is
6559           silcd/packet_send.c.
6560
6561         * Fixed silc_server_send_notify_dest to set the broadcast
6562           flag.  Fixed the silc_server_send_notify_topic to actually
6563           send the TOPIC_CHANGE notify and not SERVER_SIGNOFF notify.
6564           Affected file silcd/packet_send.c.
6565
6566         * Changed the SFTP Filesystem interface.  Changed the
6567           SilcSFTPFilesystemStruct to SilcSFTPFilesystemOps to include
6568           the filesystem operation function.  The SilcSFTPFilesystem
6569           is now a context that is allocated by all filesystem allocation
6570           functions and it already includes the operations structure
6571           and filesystem specific context.  It is given as argument
6572           now to the silc_sftp_server_start.  This made the interface
6573           a bit cleaner.  Affected file lib/silcsftp/silcsftp[_fs].h,
6574           lib/silcsftp/sftp_fs_memory.c and sftp_server.c.
6575
6576 Thu Oct 11 22:19:26 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
6577
6578         * Changed the backup router adding and getting interfaces
6579           in the server.  The router that will be replaced by the
6580           specified backup router is now sent as argument.  Affected
6581           files silcd/serverconfig.[ch], silcd/backup_router.[ch], and
6582           silcd/server.c.
6583
6584         * Added silc_net_addr2bin_ne to return the binary form of
6585           the IP address in network byte order.  Affected files
6586           lib/silcutil/[unix/win32].silc[unix/win32]net.[ch].
6587
6588 Thu Oct 11 12:14:19 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
6589
6590         * Check for existing server ID in silc_server_new_server
6591           and in silc_server_connect_to_router_final and remove the
6592           old entry if it exists.  Affected file silcd/packet_receive.c,
6593           silcd/server.c.
6594
6595         * Send the channel message always to only one router, either
6596           in upstream or downstream.  Affected file is
6597           silcd/packet_send.c.
6598
6599 Tue Oct  9 17:45:43 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
6600
6601         * Wrote the definition of the backup resuming protocol to the
6602           protocol specification.
6603
6604         * Removed one redundant channel key generation from normal
6605           server during joining procedure.  Removed one redundant
6606           channel key sending from server to router during joining
6607           procedure.  Affected file silcd/command.c.
6608
6609         * Made minor bugfixes to the backup router resuming protocol.
6610           Affected file silcd/server_backup.c, server.c.
6611
6612 Mon Oct  8 16:47:42 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
6613
6614         * Added --disable-asm configuration option.  Affected files
6615           configure.in.pre, lib/silcmath/mpi/configure.in.  A patch
6616           by salo.
6617
6618         * Implemented the backup resuming protocol that is used to
6619           resume the primary router position in the cell after the
6620           primary router comes back online.  Affected files
6621           silcd/server_backup.[ch], silcd/server, silcd/packet_receive.c,
6622           and silcd/server_util.[ch].
6623
6624 Sun Oct  7 12:29:25 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
6625
6626         * Sleep two (2) seconds after sending QUIT command to server.
6627           Affected file lib/silcclient/command.c.
6628
6629         * Assure that if outgoing data buffer is pending do not force
6630           send any data.  Affected file silcd/packet_send.c.
6631
6632         * Assure that if outgoing data buffer is pending do not force
6633           send any data.  Affected file lib/silcclient/client.c.
6634
6635         * Implemented the backup router support when the primary router
6636           goes down.  The servers and routers can now use the backup
6637           router as new primary router without loosing connectivity.
6638
6639 Sat Oct  6 21:18:54 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
6640
6641         * Added new SILC_IDLIST_STATUS_DISABLED flag for entries
6642           in the server to indicate disabled entry.  All data read
6643           from the connection will be ignored and no data is sent
6644           for entry that is disabled.  Affected files are
6645           silcd/idlist.h, silcd/server.c.
6646
6647 Fri Oct  5 00:03:29 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
6648
6649         * Created SFTP client and server test programs in the
6650           lib/silcsftp/tests directory.
6651
6652 Wed Oct  3 23:31:42 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
6653
6654         * Implemented memory filesystem (virtual filesystem) for
6655           SFTP server.  Affected file lib/silcsftp/silcsftp_fs.h,
6656           sftp_fs_memory.c.
6657
6658 Sun Sep 30 22:10:57 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6659
6660         * Implemented the SFTP (SSH File Transfer Protocol) to the
6661           lib/silcsftp.  It includes SFTP client and SFTP server
6662           implementations.
6663
6664 Sun Sep 30 10:35:44 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6665
6666         * Moved lib/silccore/silcprotocol.[ch] to the
6667           lib/silcutil library.
6668
6669         * Added silc_buffer_format_vp and silc_buffer_unformat_vp to
6670           take variable argument list pointer as argument.  Affected
6671           file lib/silcutil/silcbuffmt.[ch].
6672
6673         * Added silc_buffer_set function that is used to set data
6674           to a SilcBuffer that is not allocated at all (SilcBufferStruct).
6675           Affected file lib/silcutil/silcbuffer.h.
6676
6677         * Changed various routines in the core library to use the new
6678           silc_buffer_set instead of allocating new buffer only for
6679           temporary purposes.
6680
6681         * Added 64-bit value formatting and unformatting support to the
6682           silc_buffer_[un]format routines.  Affected file is
6683           lib/silcutil/silcbuffmt.[ch].
6684
6685           Added also 64-bit macros: SILC_GET64_MSB and SILC_PUT64_MSB,
6686           to includes/bitmove.h.
6687
6688 Fri Sep 28 21:30:10 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6689
6690         * Fixed channel user mode saving in client library.  Affected
6691           file lib/silcclient/command[_reply].c.
6692
6693 Thu Sep 27 22:52:30 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6694
6695         * Defined the file transfer to the SILC Protocol.  Added
6696           new packet type SILC_PACKET_FTP and defined File Transfer
6697           Payload.  The mandatory file transfer protocol is SFTP
6698           (SSH File Transfer Protocol).  Affected file in addition
6699           of the internet draft is lib/silccore/silcpacket.h.
6700
6701         * Deprecated the SILC_PACKET_CELL_ROUTERS and defined new
6702           packet SILC_PACKET_RESUME_ROUTER instead.  The new packet
6703           is used as part of backup router protocol when the primary
6704           router of the cell is back online and wishes to resume
6705           the position as primary router.
6706
6707         * Redefined the MAC generation keys in the protocol.  The
6708           same key is not used anymore in both direction.  Both
6709           direction will now use different keys for sending and
6710           receiving.  This fixes a potential security flaw.  This
6711           change causes incompatibilities in the protocol.
6712
6713         * Redefined also the MAC computation from the packet.
6714           An packet sequence number is now added to the MAC
6715           computation.  This prevents possible replay attacks against
6716           the protocol.  This change too causes incompatibilities
6717           in the protocol.
6718
6719           Added `sequence' field to the SilcPacketContext to hold
6720           the current sequence number for the packet.
6721
6722 Wed Sep 26 20:15:22 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6723
6724         * Added `created' field to the SilcIDListData in the file
6725           silcd/idlist.h to indicate the time when the entry was
6726           created.
6727
6728         * Added `created' field to the SilcChannelEntry too.  Affected
6729           file silcd/idlist.h.
6730
6731         * Added `creation_time' aguments to all the announcement functions
6732           in the server.  If it is provided then only the entries that
6733           was created after the provided time frame are actually
6734           announced.  Affected file silcd/server.[ch].
6735
6736         * The protocol says that the Channel ID's IP address must be
6737           based on the router's IP address.  Added check for this in
6738           the silc_server_new_channel when processing incoming New Channel
6739           Payload.  Affected file silcd/packet_receive.c.
6740
6741         * Print out the correct version with --version in SILC client.
6742           Affected file irssi/src/silc/core/silc-core.c.
6743
6744 Mon Sep 24 17:19:00 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6745
6746         * Fixed WHOWAS command to check for completnes of the client
6747           entry always, not just when the command is coming from client.
6748           Affected file silcd/command.c.
6749
6750         * Added new function silc_server_packet_queue_purge to purge the
6751           outgoing data queue to the network.  After the function returns
6752           it is guaranteed that the outgoing packet queue is empty.
6753           Affected file silcd/packet_send.[ch].
6754
6755         * Purge the outgoing packet queue in the rekey protocol's final
6756           callback to assure that all rekey packets go to the network
6757           before quitting the protocol.  Affected file silcd/server.c.
6758
6759         * Added silc_client_packet_queue_parse as similar function as
6760           in server to the client library.  The affected file is
6761           lib/silcclient/client.c.
6762
6763 Sun Sep 23 15:15:53 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6764
6765         * Splitted silcd/server.c and created silcd/server_util.[ch]
6766           for utility functions.
6767
6768         * Added new socket flag SILC_SF_DISABLED to indicate that the
6769           connection is open but nothing can be sent to or received from
6770           the connection.  Affected file lib/silcutil/silsockconn.[ch].
6771           The checking for disabled socket is checked in the low level
6772           silc_socket_write and silc_socket_read functions.
6773
6774 Thu Sep 20 23:11:28 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6775
6776         * Allow only nicknames and channel names that fits into the
6777           7-bit unsigned char ASCII set.  Affected file silcd/command.c.
6778
6779 Thu Sep 20 18:04:12 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6780
6781         * When processing JOIN command reply in server check that if
6782           the channel exists in our global list we'll move it the local
6783           list.  Affected file silcd/command_reply.c.
6784
6785         * Fixed the check whether client is joined on the channel already
6786           in JOIN command.  Affected file lib/silcclient/command.c.
6787
6788         * Fixed the JOIN command reply to check whether the channel
6789           already exists.  Affected file lib/silcclient/command_reply.c.
6790
6791 Wed Sep 19 22:58:32 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6792
6793         * Added silc_ske_status_string to map the SKE error numbers
6794           to readable strings.  The affected files are
6795           lib/silcske/silcske[_status].[ch].
6796
6797 Tue Sep 18 22:50:41 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6798
6799         * Do not show the private channels on the WHOIS channel list
6800           as it is not allowed by the protocol.  The affected file is
6801           silcd/server.c.
6802
6803 Sun Sep 16 12:32:58 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6804
6805         * Assure that the packet length digged from the actual packet
6806           is something sensible in the silc_packet_decrypt_rest_special
6807           in lib/silccrypt/silcpacket.c.
6808
6809         * Free and NULL the allocated pointer in silc_hmac_alloc if
6810           the HMAC allocation fails.  The affected file is
6811           lib/silccrypt/silchmac.c.
6812
6813         * Print the selected security properties to the log files in
6814           the server.  Affected file silcd/protocol.c.
6815
6816         * Add SKE's reference counter even if calling the completion
6817           callback manually.  Otherwise it goes negative, although it
6818           does not cause any problems.  The affected file is
6819           lib/silcske/silcske.c.
6820
6821         * Remove the client entry with short timeout after giving the
6822           KILL command.  Affected file lib/silcclient/command.c.
6823
6824         * Fixed to send error reply in WHOIS and IDENTIFY commands in
6825           case all found clients are already disconnected (WHOWAS would
6826           found them) in the server.  Affected file silcd/command.c.
6827
6828         * Update the last_receive (time of last data received) to be
6829           updated only when received private or channel message so that
6830           the idle time showed in WHOIS makes more sense.
6831
6832         * Added boolean field `valid' in to the SilcClientEntry in the
6833           client library to indicate whether the entry is valid or not.
6834           This fixes the nickname change bug on channel when changing
6835           the nickname to be same than the old (like nick to Nick) the
6836           nickname formatter doesn't set the new nick anymore to Nick@host.
6837           Affected file lib/silcclient/idlist.[ch].
6838
6839         * Now actually fixed the nickname changing on disconnection.
6840           Added new function silc_change_nick to the Irssi SILC Client.
6841           Affected file irssi/src/silc/core/client_ops.c,
6842           irssi/src/silc/core/silc-nicklist.[ch].
6843
6844 Sat Sep 15 13:29:17 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6845
6846         * Check that the public key exists in the GETKEY command before
6847           trying to encode it.  Affected file silcd/command.c.
6848
6849         * Print some notifications on received public keys with GETKEY
6850           command in the Irssi SILC Client.  Affected files are
6851           irssi/src/fe-common/silc/module-formats.[ch],
6852           irssi/src/silc/core/client_ops.c.
6853
6854         * Use IDENTIFY command to resolve the server information in the
6855           GETKEY command instead of INFO command.  Affected file
6856           lib/silcclient/command.c.
6857
6858         * All command reply functions in the client library now calls
6859           the pending command reply callbacks even if an error has
6860           occurred.  The server has done this a long time and now it was
6861           time to move the client library to this as well.  Now all
6862           errors can be delivered back to the pending command reply
6863           callbacks if necessary.  Affected files are
6864           lib/silcclient/command[_reply].[ch].
6865
6866         * Change the nickname on disconnection back to the username
6867           because in reconnect the server will enforce it to it anyway.
6868           Affected file irssi/src/silc/core/silc-servers.c.
6869
6870         * Fixed a config file parsing bug in the Irssi SILC client.
6871           Affected file irssi/src/silc/core/clientconfig.c.
6872
6873 Thu Sep 13 23:11:18 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6874
6875         * When printing the channel mode on JOIN, verify that the
6876           channel key and channel's HMAC are valid.  Affected file
6877           irssi/src/silc/core/client_ops.c.
6878
6879 Thu Sep 13 20:24:52 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6880
6881         * Added defines SILC_DEFAULT_CIPHER, SILC_DEFAULT_HMAC,
6882           SILC_DEFAULT_HASH and SILC_DEFAULT_PKCS in the file
6883           lib/silccrypt/[silccipher.h|silchmac.h|silchash.h|silcpkcs.h].
6884
6885         * Removed channel key rekey task deleting from the function
6886           silc_server_save_channel_key.  Affected file silcd/server.c.
6887           Added explicit timeout task context instead that is used to
6888           delete the task if we are registering a new task before the
6889           new task has elapsed.
6890
6891         * When channel key rekey occurs the client library now saves
6892           the old channel key for a short period of time (10 seconds) and
6893           is able to use it in case some is still sending channel
6894           messages encrypted with the old key after the rekey.  Affected
6895           file lib/silcclient/[idlist.h|client_channel.c].
6896
6897 Sun Sep  9 15:49:16 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6898
6899         * Added check to the silc_server_new_id_real to not accept
6900           new ID if it is the sender's own ID.  Affected file is
6901           silcd/packet_receive.c.
6902
6903         * Assure that we do not announce ourself or the one we've
6904           sending our announcements when we're router and are announcing
6905           servers to our primary router.  Affected file silcd/server.c.
6906
6907         * Fixed silc_server_command_identify_check_client to assemble
6908           correct WHOIS packet.  It send corrupted WHOIS packet and
6909           caused problem with router to router connections.  Affected
6910           file silcd/command.c.
6911
6912           Fixed also silc_server_command_whois_check the same way
6913           as for the IDENTIFY command.
6914
6915         * Added new SilcIDListStatus to the server in the SilcIDListData
6916           structure.   The status now includes the current status of
6917           the entry (like registered, resolved etc.).  Affected file
6918           silcd/idlist.[ch].  Defined a bunch of different status types
6919           as well.  This replaced the old boolean registered field as well.
6920
6921           Added resolve_cmd_ident field to the SilcClientEntry structure
6922           too so that if the entry is for example being resolved so
6923           another command may attach to the same pending command reply
6924           without requiring to resolve the same entry again.  This concept
6925           should optimize the WHOIS and the IDENTIFY resolving under
6926           heavy load by taking away unnecessary resolving for entries
6927           that are being resolved already.
6928
6929           Added support for adding multiple pending commands for one
6930           command idenfier.  Affected file silcd/command[_reply].[ch].
6931
6932         * Fixed WHOIS and IDENTIFY save to remove the cache entry
6933           before deleting the data.  Otherwise the hash table will have
6934           freed data in comparison functions.  Affected file is
6935           silcd/command_reply.c.
6936
6937         * Fixed silc_idlist_replace_client_id to add the new entry to
6938           the cache with NULL nickname.  Otherwise there will be invalid
6939           memory as the nickname after the nickname is freed.  Affected
6940           file silcd/packet_receive.c.
6941
6942         * Fixed the silc_idlist_get_clients_by_hash.  The entries was
6943           saved into wrong slots because the previous number of entries
6944           was not taken into account.  Affected file silcd/idlist.c.
6945           Fixed same thing in silc_idlist_get_clients_by_nickname too.
6946
6947         * If we are router and we receive JOIN notify to a channel that
6948           does not have any users then notified client is marked as the
6949           channel founder, as it is it.  The affected file is
6950           silcd/packet_receive.c
6951
6952         * Added to the extended hash table API's table_del_*ext functions
6953           the destructor as argument too, so that the caller can decide
6954           which destructor to use or whether to use destructor at all.
6955           Affected file lib/silcutil/silchashtable.[ch].
6956
6957         * Fixed ID Cache purging.  It actually deleted the entries from
6958           the hash table after the data was freed.  The hash table ended
6959           up comparing freed memory.  The affected file is
6960           lib/silccore/silcidcache.c.
6961
6962 Sat Sep  8 10:22:10 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6963
6964         * Fixed Irssi SILC client's KILL command's HELP syntax.
6965
6966         * The USERS command now resolves the detailed user information
6967           if the userinfo field is missing.  Affected file is
6968           lib/silcclient/command_reply.c.
6969
6970         * Do not print error in silc_file_read if the read file does
6971           not exist.  Just silently return NULL.  Affected file is
6972           lib/silcutil/silcutil.c.
6973
6974         * Fixed the silc_log_output to not wine about NULL filename
6975           and to not create some bogus " " filename.  Affected file is
6976           lib/silcutil/silclog.c.
6977
6978 Fri Sep  7 22:16:38 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6979
6980         * Fixed various printing bugs on the user interface in the
6981           Irssi SILC Client.  Minor changes that were forgotten from
6982           the release.
6983
6984 Fri Sep  7 17:28:37 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6985
6986         * Fixed the configure.in.pre and the compilation and distribution
6987           environment to support the new autoconf 2.52.  That version is
6988           now required to compile the CVS trunk.
6989
6990 Thu Sep  6 12:47:37 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6991
6992         * Renamed function silc_parse_nickname to silc_parse_userfqdn
6993           to generally parse user@fqdn format strings.  Affected file
6994           lib/silcutil/silcutil.c.
6995
6996         * Added nickname_format and nickname_force_format fields to the
6997           SilcClientParams structure.  The first one defines the format
6998           for the nicknames that the library will enforce if the receives
6999           multiple same nicknames.  The second one is boolean value and
7000           can be used to force the library to always enforce the format
7001           to the nicknames regardles whether there are multiple nicknames
7002           or not.  This configurable formatting was employed to flexibly
7003           support accessing multiple nicknames from the user interface.
7004           The userinterface can now set the nicknames to what ever format
7005           they prefer.  Affected file lib/silcclient/silcapi.h.
7006
7007           Added function silc_client_nickname_format to the file
7008           lib/silcclient/idlist.c.  It performs the nickname formatting.
7009
7010           Added new field `hostname´ to the SilcClientEntry context.
7011           It holds the hostname of the client.  Affected file is
7012           lib/silcclient/idlist.h.
7013
7014         * Irssi SILC Client sets the nicknames in nick@hostn format.
7015           Fe. priikone@otaku, priikone@otaku2 etc.  Affected file
7016           irssi/src/silc/core/silc-core.c.
7017
7018           The WHOIS printing now also shows both the real nickname and
7019           the formatted nickname so that user knows how to access the
7020           user if there are multiple same nicknames cached.  Affected
7021           file irssi/src/silc/core/client_ops.c.  Changed the WHOIS
7022           printing formatting too to take the hostname now as a separate
7023           argument.  The Affected file is
7024           irssi/src/fe-common/silc/modules-formats.[ch].
7025
7026         * Changed the silc_client_get_clients_local to accept the formatted
7027           nickname as argument.  It accepts the real nickname too but the
7028           formatted nickname can be used to find the true entry from
7029           multiple entries.  Affected file lib/silcclient/silcapi.h and
7030           lib/silcclient/idlist.c.
7031
7032         * Added nickname_format_parse field to the SilcClientParams.
7033           It is a callback function provided by the application to parse
7034           the nickname out of the formatted nickname string. The library
7035           calls it to get the nickname from the formatted string. Since
7036           the application generally knows better the format of the nickname
7037           string it parses it instead of the library, even though library
7038           encodes the formatted string.  If the callback function is not
7039           provided then the library will use the string as is.  The
7040           affected file is lib/silcclient/silcapi.h.
7041
7042         * All the nickname strings passed to the client library in
7043           commands are now expected to be formatted nickname strings.
7044           If the command does not support the formatted nickname string
7045           it will assume that the sent string is the actual nickname.
7046           Affected file lib/silcclient/command.c.
7047
7048 Tue Sep  4 22:31:28 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7049
7050         * Added public key authentication support to OPER and SILCOPER
7051           commands in the client library.  Affected file is
7052           lib/silcclient/command.c.
7053
7054 Tue Sep  4 12:39:17 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7055
7056         * Changed the get_auth_methdod client operation to be asynchronous.
7057           It can be async if the application resolves the authentication
7058           method from the server during the negotiation.  Added new
7059           SilcGetAuthMeth completion callback that the application will
7060           call after resolving the authentication method.
7061
7062           Added function silc_client_request_authentication_method that
7063           the application can use to resolve the authentication method
7064           from the server.  Added also SilcConnectionAuthRequest callback
7065           that the library will call after the server has replied.  The
7066           application can call this function if it does not know the
7067           current authentication method.
7068
7069           Affected files are lib/silcclient/client.c and
7070           lib/silcclient/silcapi.h.
7071
7072         * The Irssi SILC client now automatically resolves the authentication
7073           method incase any configuration information is not present (and
7074           currently there never is).  The affected file is
7075           irssi/src/silc/core/client_ops.c.
7076
7077         * Fixed public key authentication from the client library.
7078           Affected file lib/silcclient/protocol.c.  Changed also the
7079           protocol specification about the public key authentication in
7080           the connection authentication protocol.  The actual data to be
7081           signed is now computed with a hash function before signing.
7082
7083         * Fixed the public key authentication from the server as well.
7084           Affected file silcd/protocol.c.
7085
7086         * Removed the mlock()'s from the memory allocation routines.
7087           Affected file lib/silcutil/silcmemory.c.  The ./configure does
7088           not check anymore for the mlock().  Affected file is
7089           configure.in.pre.
7090
7091         * Fixed USERS command in server to allow the execution of the
7092           command for private and secret channels if the client sending
7093           the command is on the channel.  Affected file silcd/command.c.
7094
7095         * Fixed silc_client_get_clients_local to return the clients
7096           count correctly.  It could return wrong value.  Affected file
7097           lib/silcclient/idlist.c.
7098
7099 Mon Sep  3 20:09:59 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7100
7101         * Fixed the lib/silcmath/mpi/mpi.h to always use 32-bit data
7102           types.  The assembler optimizations seemed not to like 64-bit
7103           data types.  The assmebler optimizations thus are now enabled
7104           also for BSD systems as opposed to only enable them for Linux.
7105
7106         * Do not check for threads at all on BSD systems.  Affected
7107           file configure.in.pre.
7108
7109         * Removed -n and -h options from the Irssi SILC Client since
7110           they are not used in silc.
7111
7112         * Fixed the prime generation to assure that the first digit
7113           of the generated random number is not zero since our conversion
7114           routines does not like number strings that starts with zero
7115           digit.  If zero digit is seen the random number is regenerated.
7116           This caused some corrupted RSA keys when the zero first digit
7117           was met.  Affected file lib/silcmath/silcprimegen.c.
7118
7119 Sun Sep  2 17:17:24 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7120
7121         * Fixed WIN32 configuration in the ./configure script.
7122           Fixed to include xti.h on environments that has it.
7123           Patches by Carsten Ilchmann and andrew.
7124
7125 Sat Sep  1 00:29:33 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7126
7127         * Changed the silc_id_create_client_id to be collision
7128           resistant.  It is now assured that there cannot be created
7129           two same client ID's.  I suspect that some weird bugs in
7130           the server were actually caused by duplicate Client IDs.
7131           Affected file silcd/serverid.[ch].  A router receiving
7132           new ID now also assures and informs the sending server
7133           if the ID caused collision.
7134
7135         * Changed the silc_id_create_channel_id to also assure that
7136           there are no collisions.
7137
7138 Wed Aug 29 17:55:01 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7139
7140         * Statement about ignoring the Mutual Authentication flag when
7141           performing rekey with PFS was a bit misleading.  It is ignored
7142           if it was set in the initial negotiation, it cannot be even
7143           set in the rekey.  Fixed in the ke-auth draft.  Started the
7144           new versions of the protocol drafts in the doc/.
7145
7146 Sun Aug 26 14:59:15 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7147
7148         * Fixed a bug in silc_client_command_identify_save when saving
7149           new channel information.  The channel name was no duplicated
7150           and caused crash on exit.  Affected file is
7151           lib/silcclient/command_reply.c.
7152
7153 Fri Aug 17 23:07:45 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7154
7155         * Fixed the getkey command handling in the server.  Send just
7156           empty OK reply to the sender if the key could not be fetched
7157           (but everything else was ok, like the key just was not available).
7158           Changed the public key parameter to optional in the protocol
7159           specs so that empty OK reply can be sent.  Affected file
7160           silcd/command.c.
7161
7162           Added a message to Irssi SILC client to tell to user if the
7163           server did not return a public key.
7164
7165 Tue Aug 14 07:29:27 CEST 2001  Pekka Riikonen <priikone@silcnet.org>
7166
7167         * Fixed a channel key regeneration bug.  It registered new
7168           timeout tasks exponentially until all system resources were
7169           used.  Affected file silcd/server.c.
7170
7171 Sun Aug 12 20:48:14 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7172
7173         * Added the SILC Document generator to the scripts/silcdoc.
7174           It can be used to generate the Toolkit Reference Manual out
7175           of the source tree.  Internally it will also use the RoboDoc
7176           generator now imported in util/robodoc.
7177
7178 Sun Aug 12 12:28:17 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7179
7180         * Added couple of return's in rekey protocol if error orccurred
7181           during the protocol.  The execution must be terminated.
7182           Affected file silcd/protocol.c.  Also, terminate the protocol
7183           always with timeout.
7184
7185 Sat Aug 11 12:36:02 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7186
7187         * The client's Client ID was created initally from the wrong
7188           nickname (it could have been in format nick@host) in the
7189           silc_server_new_client.  Affected file silcd/packet_receive.c
7190
7191 Sat Aug 11 00:29:57 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7192
7193         * Added some SILC_LOG_ERROR's to various error conditions
7194           if client could not be added to ID cache.  Affected files
7195           silcd/packet_receive.c and silcd/server.c.
7196
7197         * When client's sock->user_data is freed, NULL also the
7198           client->router and client->connection pointers.  Added check
7199           for these pointers being NULL to various places around the
7200           code.  Affected file silcd/server.c.
7201
7202         * Added client->data.registered == TRUE checks to various
7203           places around the code to assure that unregistered client's
7204           are not handled when it is not allowed.  Affected file
7205           silcd/server.c.
7206
7207         * Added `bool registered' fields to all
7208           silc_idlist_[server|client]_get_* routines to indicate whether
7209           the fetched client needs to be registered or not.  Affected
7210           file silcd/idlist.[ch].
7211
7212         * Add your own entry as registered to the ID cache in the
7213           server.  Affected file server.c.
7214
7215         * Fixed a bug in silc_server_new_server.  The SilcServer was
7216           set as the new server's context instead of SilcServerEntry.
7217           This naturally caused some weird bugs.
7218
7219         * Added "updated" field the SilcChannelEntry which indicates
7220           the time since the channel entry was last accessed.  This
7221           can be used to determine whether it is necessary to
7222           announce the channel after backup resuming protocol.
7223           Affected files silcd/idlist.[ch].
7224
7225 Thu Aug  9 18:28:37 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7226
7227         * Do not delete the channel rekey task when adding it
7228           for in silc_server_create_channel_key.
7229
7230         * Changed the silc_server_create_channel_key to return
7231           TRUE or FALSE to indicate the success of the channel key
7232           creation.
7233
7234 Thu Jul 26 11:32:31 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7235
7236         * Fixed MSVC++ project files and added missing files to
7237           Makefiles under win32/.
7238
7239 Wed Jul 25 18:43:54 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7240
7241         * Do not add TCP_NODELAY flag if the operating system
7242           does not have it defined.  Affected files are
7243           lib/silcutil/[unix/win32]/silc[unix/win32]net.c.
7244
7245         * Fixed buffer overflow from Irssi SILC Client.  Affected
7246           file irssi/src/fe-common/core/themes.c.
7247
7248         * Fixed double free in client library in the file
7249           lib/silcclient/client.c when disconnecting from server.
7250
7251         * Applied double free patch from cras to Irssi SILC client.
7252           Affected files irssi/src/core/[modules/expandos].c
7253
7254         * Fixed the disconnection handling to Irssi SILC Client.
7255           The application must call silc_client_close_connection
7256           in ops->connect client operation in case of failure of
7257           the connection.  Affected file is
7258           irssi/src/silc/core/client_ops.c.
7259
7260         * Do not set sock->protocol to NULL in the function
7261           silc_client_close_connection after executing the protocol's
7262           final callback since the sock might not be valid anymore.
7263           Affected file lib/silcclient/client.c.
7264
7265 Wed Jul 25 16:04:35 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7266
7267         * Do not enable SILC_THREADS if the linking with libpthread
7268           did not happen.  Affected file configure.in.pre.
7269
7270         * Added notion to protocol specification that server must
7271           verify the sent authentication payload with CMODE when
7272           setting the channel founder key.  Implemented it to the
7273           server.  Affected file silcd/command.c.
7274
7275 Mon Jul 23 18:31:43 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7276
7277         * Added _EXTRA_DIST SILC distribution variable to the
7278           distributions file.  It is used to conditionally add extra
7279           files or directories to the specific distribution.  Affected
7280           files ./prepare, Makefile.am.pre and distributions.
7281
7282           Removed the `_' from the start of the distribution names.
7283           It is redundant.
7284
7285         * Added README.WIN32 for instructions to compile the Toolkit
7286           under WIN32.
7287
7288 Mon Jul 23 10:12:37 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7289
7290         * Fixed a double free in disconnection in the server.  Affected
7291           file is silcd/server.c.
7292
7293         * Fixed the lib/silcske/groups.c to work now also with GMP
7294           MP library.  The string conversion did not work when using
7295           specific base and the base is indicated in the string as well.
7296
7297         * Created win32/ directory which now includes MSVC++ specific
7298           stuff so that toolkit (DLLs) may be compiled with MSVC++.
7299           It will appear only in the toolkit distribution
7300
7301 Sun Jul 22 19:40:30 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7302
7303         * Changed the key material distribution function in case when
7304           the hash output is too short.  The data is now concatenated
7305           a bit differently than it used to.  Made the change to the
7306           SKE protocol specification.
7307
7308         * Added better GMP detection to configure.in.pre.  A patch
7309           by salo.
7310
7311 Fri Jul 20 13:16:00 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7312
7313         * Fixed a minor bug in SKE that might cause some problem on
7314           some platforms.  Affected file lib/silcske/silcske.c.
7315
7316         * Added the cookie checking for initiator in the SKE.  It checks
7317           that the responder returns the sent cookie unmodified.  The
7318           affected file is lib/silcske/silcske.c.  Added new SKE
7319           error type INVALID_COOKIE that can be sent during the
7320           negotiation.  Fixed some memory leaks as well.
7321
7322         * Added the "invalid cookie" error message to Irssi SILC client's
7323           message formats.
7324
7325 Thu Jul 19 21:44:31 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7326
7327         * Added `task_max' field to the SilcClientParams to indicate
7328           the maximum tasks the scheduler can handle.  If set to zero,
7329           default values are used.  Affected file lib/silcclient/silcapi.h.
7330
7331         * Fixed memory leaks in silc_client_close_connection.  Affected
7332           file lib/silcclient/client.c.
7333
7334         * Added silc_client_del_client_entry to client library to free
7335           all memory of given client entry.  Affected file is
7336           lib/silcclient/idlist.[ch].
7337
7338         * Added new functions silc_client_del_channel and
7339           silc_client_del_server to delete channel and server entries.
7340           Affected file lib/silcclient/[silcapi.h/idlist.c].
7341
7342         * Removed silc_client_del_client_by_id from silcapi.h.
7343
7344         * Fixed the INFO command to return the server's own info
7345           correctly when querying by Server ID.  Affected file is
7346           silcd/command.c.
7347
7348 Thu Jul 19 14:47:30 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7349
7350         * Removed the non-blocking settings in WIN32 code in the
7351           silc_sock_[read/write] and added SleepEx instead.  Affected
7352           file lib/silcutil/win32/silcwin32sockconn.c.  The availability
7353           of input data is now checked with FIONREAD and ioctlsocket.
7354
7355 Wed Jul 18 18:34:01 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7356
7357         * Call silc_schedule_task_del_by_context in the
7358           silc_protocol_cancel instead of silc_schedule_task_del_by_callback.
7359           Affected file lib/silccore/silcprotocol.c.
7360
7361         * Call silc_protocol_cancel for active protocols in the
7362           silc_server_close_connection if the funtion
7363           silc_server_free_sock_user_data has not been called.
7364           Affected file silcd/server.c.
7365
7366         * Generic tasks cannot be deleted using the del_by_fd
7367           task deleting function since generic tasks does not match
7368           any specific fd.  Affected file lib/silcutil/silcschedule.[ch].
7369
7370         * Added a notion to SILCOPER help file that the SILCOPER works
7371           only on router server, not on normal server.
7372
7373 Wed Jul 18 09:40:04 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7374
7375         * Added for WIN32 support for the new scheduler as well.
7376           Affected file lib/silcutil/win32/silcwin32schedule.c.
7377
7378         * Fixed the SHA1 implementation to work on various platforms.
7379
7380 Tue Jul 17 23:04:10 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7381
7382         * Rewrote the SILC Scheduler entirely.  Removed the old SILC Task
7383           API.  It is part of the scheduler now.  Everything else is
7384           as previously but some functions has changed their names.
7385           Checkout the lib/silcutil/silcschedule.h for the interface.
7386           Updated all applications to use the new interface.  Affected
7387           files are lib/silcutil/silcschedule.[ch].
7388
7389 Tue Jul 17 16:53:30 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7390
7391         * Found a bug in the SKE implementation.  The HASH value,
7392           specified by the protocol, was not computed correctly.  The
7393           public key of the responder was not added to the computation
7394           even though it is mandatory.  Affected file lib/silcske/silcske.c.
7395           This unfortunately causes incompatibilities with older
7396           clients and servers.
7397
7398         * Added WIN32 specific network init and uninit functions:
7399           silc_net_win32_init and silc_net_win32_uninit to init and uninit
7400           the Winsock2.  Affected file lib/silcutil/silcnet.h and
7401           lib/silcutil/win32/silcwin32net.c.
7402
7403         * Set the socket always to nonblocking mode on WIN32 after
7404           reading data or writing data.  Affected file is
7405           lib/silcutil/win32/silcwin32sockconn.c.
7406
7407 Mon Jul 16 22:55:26 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7408
7409         * Fixed various compilation problems under WIN32.  Affected
7410           files lib/silcutil/win32/silcwin32thread.c and
7411           lib/silcutil/win32/silcwin32schedule.c.
7412
7413         * Removed all _internal.h #includes from public header
7414           files.  Internal headers must never be included from
7415           public headers.
7416
7417           Removed also the lib/silcske/payload_internal.h file.
7418
7419         * All include files that may be needed (public and some others
7420           included by the public headers) by application developers are
7421           now copied to the ./includes directory.  It does not copy any
7422           internal headers.  Affected file Makefile.defines.pre and all
7423           Makefile.am's under lib/ and subdirs.
7424
7425 Thu Jul 12 17:49:31 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7426
7427         * Do not change the ~/.silc directory's permissions automatically.
7428           Affected file irssi/src/silc/core/clientutil.c.
7429
7430 Thu Jul 12 10:18:40 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7431
7432         * Do not cancel the protocol in silc_server_close_connection
7433           it might cause recursion.  Now cancelled in the function
7434           silc_server_free_sock_user_data.  Affected file silcd/server.c.
7435
7436         * Fixed the silc_server_remove_clients_by_server to regenerate
7437           the channel keys correctly finally.  Added also new function
7438           silc_server_remove_clients_channels to actually do it.
7439           Affected file silcd/server.c.
7440
7441         * Fixed the silc_server_new_channel to not crash by giving
7442           wrong router to the new channel.  Affected file is
7443           silcd/packet_receive.c.
7444
7445 Wed Jul 11 18:31:57 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7446
7447         * Added SilcClientParams structure to the lib/silcclient/silcapi.h
7448           which is given as argument to the silc_client_alloc now.
7449           It can be used to configure the client and set various parameters
7450           that affect the function of the client.
7451
7452         * The USERS command in server did not check whether the channel
7453           is private or secret.  Affected file silcd/command.c.
7454
7455         * Added new argument to the USERS command in protocol specification.
7456           The USERS command now can take the channel name as argument
7457           as well.  Added support for this in client and server and
7458           updated the protocol specs.
7459
7460         * Completed the GETKEY command in client. It can be now used
7461           to fetch also servers public key not only some clients.
7462           Affected files lib/silcclient/command[_reply].c.
7463
7464         * Added silc_client_get_server to return server entry by the
7465           server name.  Affected files lib/silcclient/silcapi.h and
7466           idlist.c.
7467
7468         * Redefined the IDENTIFY command in protocol specification to be
7469           more generic.  It now can be used to query information about
7470           any entity in the SILC Network, including clients, servers and
7471           channels.  The query may be based either the entity's name
7472           or the ID.  Added support for this in both client and server.
7473
7474           Affected files silcd/command.c and lib/silcclient/command.c
7475           and command_reply.c.
7476
7477         * Optimized the WHOIS and WHOWAS commands in the server. Removed
7478           the _from_client and _from_server functions.  Affected file
7479           silcd/command.c.
7480
7481         * Added silc_client_get_channel_by_id_resolve to the file
7482           lib/silcclient/silcapi.h to resolve channel information by
7483           its ID.  Added also silc_client_get_channel_by_id that
7484           does not resolve it from the server.
7485
7486 Tue Jul 10 18:05:38 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7487
7488         * Added SilcServerEntry context into the client library
7489           to represent one server.  The INFO command now allocates
7490           these to save the resolved server info.  For now on the
7491           client library will also keep information about servers,
7492           connected and resolved with INFO.
7493
7494           The INFO command now allocates the SilcServerEntry context
7495           and saves the server info there.  The COMMAND_REPLY in
7496           the INFO now returns the parameters to application in
7497           same order as defined in the protocol specification.
7498
7499           The entries are cached in the client->server_cache.
7500
7501         * The INFO command is now issued after received the Client ID
7502           from the server.  Affected file lib/silcclient/client.c.
7503
7504         * The CMODE_CHANGE notify may now return also an SilcServerEntry
7505           to the application as the mode changer might be server.
7506           It is guaranteed that NULL is not returned anymore to the
7507           application.  Affected file lib/silcclient/client_notify.c.
7508
7509           The ID Type is now also passed to the application so that
7510           it can check whether the returned entry is SilcClientEntry
7511           or SilcServerEntry.
7512
7513           Added new function silc_client_get_server_by_id to return
7514           the server entry by ID.  Affected files are the
7515           lib/silcclient/silcapi.h and lib/silcclient/idlist.c.
7516
7517         * Do not create the channel in the Irssi SILC Client when issuing
7518           the JOIN command but when received the sucessful JOIN command
7519           reply.  Otherwise the channel might get created even though we
7520           could not join it.  The Affected file is
7521           irssi/src/silc/core/[silc-channels.c/client_ops.c].
7522
7523         * Fixed a channel joining bug in router.  The router must also
7524           check the channel modes, invite and ban lists etc. when serving
7525           the JOIN command sent by normal server.  Affected file is
7526           silcd/command.c.  The router now resolves the client's
7527           information from the server who sent the JOIN command if it
7528           does not know it, and processes the JOIN command only after
7529           that.
7530
7531         * Changed the SilcCommandCb to take new argument; void *context2.
7532           Affected file lib/silccore/silccommand.h
7533
7534           The second argument in the command callbacks in the server now
7535           includes the SilcServerCommandReplyContext if the command was
7536           called as pending command callback from the command reply.
7537           Otherwise it is NULL. When called as pending the status of the
7538           command reply will be checked and if it was erronous the
7539           error will be sent to the original sender of the command.
7540           This way the client always receives the error messages even
7541           though the server was actually the one who received the error
7542           when it resent the command to router, for example.  Affected
7543           files silcd/command[_reply].[ch].
7544
7545         * Fixed sending WHOWAS command's error message to client if
7546           the requested client could not be found.  It was missing.
7547           silcd/command.c.
7548
7549         * Changed the CMODE and CUMODE commands reply arguments in the
7550           protocol specification.  The Channel ID is now sent in both
7551           of the commands to identify the channel.  Implemented this
7552           new feature to the client and server.  Affected files
7553           lib/silcclient/command_reply.c and silcd/command.c.
7554
7555         * Made better checks for invite and ban lists in the JOIN
7556           command in server.  Affected file silcd/command.c.
7557
7558 Mon Jul  9 18:28:34 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7559
7560         * The server now performs the incoming host IP/DNS lookup
7561           using the silc_socket_host_lookup and thus does not block
7562           the server anymore.  Affected file silcd/server.c.
7563
7564         * Completed the multi-thread support for SILC Scheduler in
7565           the lib/silcutil/silcschedule.c.
7566
7567         * Fixed the configure.in.pre to detect the pthread correctly
7568           on various systems.
7569
7570         * Fixed a deadlock in silc_task_queue_wakeup in the file
7571           lib/silcutil/silctask.c.
7572
7573 Mon Jul  9 13:40:03 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7574
7575         * Added new function silc_schedule_wakeup that is used in
7576           multi-threaded environment to wakeup the main thread's
7577           schduler. It needs to be used when a thread adds a new task
7578           or removes a task from task queues. After waking up, the
7579           scheduler will detect the task queue changes. If threads
7580           support is not compiled in this function has no effect.
7581           Implemented the wakeup mechanism to both Unix and WIN32
7582           systems.  Affected files are lib/silcutil/silcschedule.[ch],
7583           lib/silcutil/unix/silcunixschedule.c and the
7584           lib/silcutil/win32/silcwin32schedule.c.
7585
7586         * Added new function silc_task_queue_wakeup to wakeup the
7587           scheduler by the specified task queue.  Affected file
7588           lib/silcutil/silctask.[ch].
7589
7590         * The silc_socket_host_lookup_start now wakes up the scheduler
7591           after adding the timeout task.  Affected file is
7592           lib/silcutil/silcsockconn.c.
7593
7594         * The silc_socket_host_lookup is synchronous now if the threads
7595           support is not compiled in.  However, the callback is still
7596           called asyncronously through the scheduler, anyway.  Affected
7597           file lib/silcutil/silcsockconn.c.
7598
7599 Mon Jul  9 00:24:45 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7600
7601         * Added new function silc_socket_host_lookup to perform
7602           asynchronous IP and FQDN lookups for the socket connection.
7603           Affected files lib/silcutil/silcsockconn.[ch].
7604
7605 Sun Jul  8 18:44:53 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7606
7607         * Added SILC_MUTEX_DEFINE to define the mutex on environments
7608           that may or may not compile the mutex support in.
7609
7610           Changed the silc_mutex_alloc interface. It allocates the
7611           mutex now to the sent pointer and returns TRUE or FALSE.
7612
7613           Affected file lib/silcutil/silcmutex.h.
7614
7615         * Wrote the SILC Task Queue interface to support multi-threads.
7616           Affected file lib/silcutil/silctask.[ch].
7617
7618         * Wrote the SILC Scheduler to support multi-threads.  Affected
7619           file lib/silcutil/silcschedule.c.
7620
7621 Sun Jul  8 11:16:01 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7622
7623         * Implemented the SILC Mutex API and SILC Thread API for WIN32
7624           in lib/silcutil/win32/.
7625
7626 Sun Jul  8 00:18:15 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7627
7628         * Defined SILC Mutex API and SILC Thread API and implemented
7629           them for Unix.  Affected files are
7630           lib/silcutil/silcmutex.h, lib/silcutil/silcthread.h,
7631           lib/silcutil/unix/silcunixmutex.c and
7632           lib/silcutil/unix/silcunixthread.c.
7633
7634 Sat Jul  7 14:40:31 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7635
7636         * Fixed the silc_server_remove_clients_by_server's channel
7637           key re-generation.  The hash table handling was incorrect
7638           and would not work with many channels.  Affected file is
7639           silcd/server.c.
7640
7641         * Fixed some memory leaks around the server code.
7642
7643         * Rewrote the silc_server_get_users_on_channel to support IPv6
7644           based Client ID's.  Affected file silcd/server.c.
7645
7646         * Defined the SILC_MESSAGE_FLAG_SIGNED to the protocol
7647           specification.  However, a separate document must be written
7648           to define the detailed signing procedure and the payload
7649           associated with the flag.  Defined the flag to the
7650           lib/silccore/silcchannel.h as well.
7651
7652 Fri Jul  6 18:26:31 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7653
7654         * Changed the dynamic tables to static size tables in the
7655           lib/silccrypt/silchmac.c.
7656
7657         * Removed GCC dependencies from the code.  A patch by cras.
7658
7659 Fri Jul  6 09:39:35 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7660
7661         * Do not show the error "Error receiving packet bla bla"
7662           in server if it really was not an error (-2 means that reading
7663           is pending).  Affected file silcd/server.c.
7664
7665 Thu Jul  5 21:22:32 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7666
7667         * Fixed a possible crash in silc_server_remove_clients_by_server
7668           in silcd/server.c.  Fixed there also some memory leaks.
7669
7670         * Fixed the silc_idlist_replace_client_id.  It could replace
7671           wrong key in the hash table.  Affected file silcd/idlist.c.
7672
7673         * Do not check whether there are global users on the channel
7674           if the channel->global_users is FALSE.  Affected functions
7675           silc_server_remove_from_one_channel and
7676           silc_server_remove_from_channels in silcd/server.c.  Also,
7677           do not check if the removed client is local as we can be
7678           sure that global client was not removed from the channel
7679           and checking for global users is not needed.
7680
7681         * The silc_server_remove_clients_by_server now re-generates
7682           the channel keys correctly for those channels that had
7683           clients removed from them.  Affected file silcd/server.c.
7684
7685 Tue Jul  3 11:39:20 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7686
7687         * Found the reason of random crashes in the server.  We weren't
7688           ignoring the SIGPIPE signal (which can be sent in write())
7689           and it crashed the server.  Affected file silcd/silcd.c.
7690
7691 Fri Jun 29 20:05:25 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7692
7693         * Assure that sock->user_data is not NULL in the function
7694           silc_server_packet_send in silcd/packet_send.c.
7695
7696         * Disconnect the remote connection if it could not be added
7697           to any ID lists in the server.  The affected file is
7698           silcd/server.c.
7699
7700         * Check in silc_server_packet_send[_real/dest] that the
7701           socket is not disconnecting and ignore the data if it is.
7702           Affected file silcd/packet_send.c.
7703
7704         * Define inline to __inline on native WIN32 compilation.
7705           Affected file includes/silcwin32.h.
7706
7707         * Added some explicit type casts for inline code since MSVC
7708           require them.  Affected files lib/silcutil/silcbuffer.h,
7709           lib/trq/silcdlist.h and lib/trq/silclist.h.
7710
7711         * Print warning in log files from now on if the packet
7712           decryption fails.  Affected file silcd/server.c.
7713
7714 Thu Jun 28 21:30:39 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7715
7716         * Changed the `say' client operation's interface to accept
7717           new `type' argument to indicate the type of the message sent
7718           by the library.  The application may filter the library's
7719           messages according the type.  The affected file is the
7720           lib/silcclient/silcapi.h.
7721
7722         * Added two new functions to lib/silcclient/silcapi.h:
7723           silc_client_del_client and silc_client_del_client_by_id.
7724           Affected file lib/silcclient/idlist.c.
7725
7726         * Moved the clientincludes.h from includes/ to silc/ and
7727           serverincludes.h from includes/ to silcd/.
7728
7729         * The modes for the CMODE and CUMODE are now passed as
7730           uint32 for application with COMMAND_REPLY.  The affected
7731           file is lib/silcclient/command_reply.c.
7732
7733 Wed Jun 27 22:24:47 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7734
7735         * /WHOIS without arguments shows client's own information.
7736           Affected file lib/silcclient/command.c.
7737
7738         * Changed PING to not accept any arguments.  The specs
7739           says that client can ping only the connected server so
7740           requiring an argument is not needed.  Affected file is
7741           lib/silcclient/command.c.
7742
7743 Wed Jun 27 00:10:33 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7744
7745         * Fixed a fatal bug in private message sending and reception
7746           encryption and decryption when using private message keys.
7747           The implementation was incorrect and did not follow the
7748           specification.  It causd that some of the message were
7749           lost since it did not use the sending and receiving keys
7750           as the protocol suggests.  This has been fixed and will cause
7751           incompatibilities with older clients when sending private
7752           message encrypted with private message keys.  Affected files
7753           lib/silcclient/client_prvmsg.c, lib/silcclient/client_keyagr.c
7754           and various other in Irssi SILC Client.
7755
7756           Added `responder' boolean argument to the functions
7757           silc_client_add_private_message_key[_ske] to indicate when
7758           the key is added as responder or initiator of the key
7759           negotiation.
7760
7761 Tue Jun 26 19:23:07 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7762
7763         * Removed the silc_ske_check_version function and created
7764           a SilcSKECheckVersion callback.  Added also a function
7765           silc_ske_set_callbacks that is now used to set all SKE
7766           callbacks.  The callback functions are not given to
7767           the SKE functions anymore, but this function is used to
7768           set the callbacks.
7769
7770         * Fixed the WIN32 DLL generation in lib/Makefile.am.pre.
7771
7772         * Added `silc_version' argument to the silc_client_alloc
7773           to define the version of the application for the library.
7774           The library will use the version string to compare it
7775           against the remote host's (usually a server) version
7776           string.  Affected file lib/silcclient/silcapi.h
7777
7778         * Added the KE protocol context to Key Agreement context
7779           in client library so that we can abort the SKE if it
7780           is in process when we get timeout.  Affected file is
7781           lib/silcclient/client_keyagr.c.
7782
7783         * Do not resolve the client ID forever if it returns in the
7784           first time that such client does not exist.  This was done
7785           for example with private message.  Affected file is
7786           lib/silcclient/client_prvmsg.c.
7787
7788 Mon Jun 25 21:42:51 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7789
7790         * Do not add regex.h for WIN32.  The affected file
7791           includes/silcincludes.h.
7792
7793         * Added WIN32 DLL generation to lib/Makefile.am.pre.  It might
7794           not work yet 100%.  It generates the DLL's automatically
7795           when compiling with --with-win32 under cygwin.
7796
7797 Sun Jun 24 19:49:23 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7798
7799         * lib/contrib/regex.c is not compiled on WIN32.
7800
7801         * Added silc_net_get_socket_opt function to the
7802           lib/silcutil/silcnet.h.
7803
7804         * Added includes/silcwin32.h for WIN32 specific includes
7805           and definitions.
7806
7807         * Do not use ptime structure or any of the posix process
7808           functions on WIN32 in lib/silccrypt/silrng.c.
7809
7810         * Added silc_gettimeofday to provide generic function
7811           for struct timeval on all platforms.  Added the function
7812           to lib/silcutil/silcutil.h.
7813
7814 Sun Jun 24 12:19:52 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7815
7816         * Moved the lib/silccore/silcsockconn.[ch] to the utility
7817           library as they clearly belong there.  As a plus side we
7818           can make the actual socket connection routines platform
7819           specific.
7820
7821           Added also new generic function silc_socket_read and
7822           silc_socket_write (that used to be silc_packet_[read/write].
7823           The implementation of these are platform specific.
7824
7825         * Added WIN32 specific routines of silc_socket_[read/write]
7826           to lib/silcutil/win32/silcwin32sockconn.c.
7827
7828 Sat Jun 23 16:01:00 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7829
7830         * Added preliminary support for native WIN32 compilation under
7831           cygwin (using the -mno-cygwin option for GCC) to the
7832           ./configure.in.pre.  The --with-win32 now prepares the
7833           compilation for native WIN32.
7834
7835         * Rewrote the SILC Scheduler interface in the file
7836           lib/silcutil/silcschedule.h.  The scheduler is now context
7837           based and does not have anymore any global static scheduler.
7838           Moved the Unix scheduler to the lib/silcutil/unix/ directory
7839           and created lib/silcutil/win32 directory for WIN32 based
7840           scheduler.
7841
7842         * Added Unix specific network routines to the
7843           lib/silcutil/unix/silcunixnet.c and the old
7844           lib/silcutil/silcnet.c includes now only generic routines.
7845
7846           Added WIN32 specific network routines to the
7847           lib/silcutil/win32/silcwin32net.c.
7848
7849         * Added Unix specific utility functions from the
7850           lib/silcutil/silcutil.c to lib/silcutil/unix/silcunixutil.c.
7851
7852         * Added WIN32 SILC Scheduler to the file
7853           lib/silcutil/win32/silcwin32schedule.c. The code is of course
7854           untested.
7855
7856 Fri Jun 22 10:44:14 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7857
7858         * Do not handle JOIN notify in the server if the target client
7859           is not registered (idata->registered == FALSE).  The affected
7860           file is silcd/packet_receive.c.
7861
7862         * Update the nickrec->founder in event_cumode in the Irssi SILC
7863           client.  Affected file irssi/src/silc/core/silc-channels.c.
7864
7865         * Fixed the CUMODE_CHANGE notify handling in the server when
7866           server and router are announcing their clients on channels.
7867           Now the mode changes are saved and notified correctly.  The
7868           affected file is /silcd/packet_receive.c.
7869
7870         * Fixed silc_idlit_replace_[server/client/channel]_id functions.
7871           They really did not replace the cache entry in the ID Cache.
7872           Now they do that.  Affected file silcd/idlist.c.
7873
7874         * Fixed the KICK notify handling in the Irssi SILC client to
7875           update the channel records so that the kicked client does not
7876           appear to be on the channel.  The affected file is
7877           irssi/src/silc/core/silc-channels.c.
7878
7879         * Always update the conn->current_channel when executing command
7880           on a channel.  Affected file irssi/src/silc/core/silc-servers.c.
7881
7882         * Fixed the KILL notify handling in Irssi SILC client to remove
7883           the killed client on all channels.
7884
7885 Thu Jun 21 17:10:08 CEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7886
7887         * Fixed the silc_parse_command_line to remove extra spaces
7888           from the start and end of the arguments.  Affected file is
7889           lib/silcutil/silcutil.c.
7890
7891         * Cancel and free any active protocol in the function
7892           silc_server_close_connection.  Affected file silcd/server.c.
7893
7894         * Cancel and free any active protocol in the function
7895           silc_client_close_connction.  Affected file is
7896           lib/silcclient/client.c.
7897
7898         * Do not execute the KILL command for clients that are in
7899           history (ie. they are not in the network).  Affected file is
7900           silcd/command.c.
7901
7902         * Fixed KILL notify handling, client does not crash anymore.
7903           Affected file irssi/src/silc/core/silc-channels.c.
7904
7905         * Reduced the default packet buffer size from 2048 to 1024 in
7906           lib/silccore/silcpacket.c.
7907
7908         * Added SILC_SKE_STATUS_FREED SKE status type and a reference
7909           counter to the SKE context that is incresed when the SKE library
7910           performs async operation outside the library.  If the outside
7911           process frees the SKE context and FREED status will be set
7912           and the library will detect after the sync operation that the
7913           libary is freed.  The affected files are
7914           lib/silcske/silcske[_status].[ch].
7915
7916         * Resolve the client entry information in the function
7917           silc_client_channel_message to assure that NULL pointer is not
7918           passed as client entry to the application. */
7919
7920         * Fixed the task timeout calculation to assure that there is
7921           never negative timeouts.  The affected file is
7922           lib/silcutil/silcschedule.c.
7923
7924         * Fixed the channel user mode notification sending in server.
7925           It was sent point-to-point to the router (or to server by router)
7926           but it needs to be destined to a channel.  The routines now
7927           supports sending the channel user mode notifys to the channels
7928           when announcing clients and channels.  Affected files are
7929           silcd/server.c and silcd/packet_receive.c.
7930
7931         * Fixed the CHANNEL_CHANGE notify handling in the client libary.
7932           It did not actually replace the old channel entry in the cache.
7933           Affected file lib/silcclient/client_notify.c.
7934
7935 Tue Jun 19 22:10:36 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7936
7937         * Fixed a possible crash in silc_packet_send_prepare.  It now
7938           assures always that there is enough space in the buffer and
7939           at the tail area of the buffer (for MAC).
7940
7941           Fixed the inbound buffer reallocation in silc_packet_read.
7942           It was old code and did not handle the reallocation correctly.
7943           Affected
7944
7945           The affected file is lib/silccore/silcpacket.c.
7946
7947         * Fixed buffer overflow in silc_parse_nickname in the file
7948           lib/silcutil/silcutil.c.
7949
7950 Tue Jun 19 13:40:09 CEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7951
7952         * make install generates new server keys only if there is not
7953           keys already.
7954
7955 Mon Jun 18 18:49:07 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7956
7957         * Set SILC_MESSAGE_FLAG_NOREPLY when sending the away message.
7958           Added check that if the NOREPLY is set then we will not send
7959           the away message.  This avoids infinite loop of away messages
7960           if both clients are away.  The affected file is
7961           lib/silcclient/client_prvmsg.c.
7962
7963         * Fixed client crash if /NICK was given without arguments.
7964           Affected file lib/silcclient/command.c.
7965
7966         * Server does not send the invite list in INVITE command back
7967           to the client if the list was not altered.  Added this notion
7968           to the protocol spec as well.  Affected file silcd/command.c.
7969
7970           Fixed possible crash in INVITE command by checking the
7971           value of silc_server_get_client_route command.
7972
7973         * Fixed the INVITE notify type handling.  The arguments are now
7974           taken in correct order and client does not crash.  The affected
7975           file is irssi/src/silc/core/silc-channels.c.
7976
7977           Removed the "Inviting xxx to channel" message from the
7978           client library away and let the application handle it.
7979           Affected file lib/silcclient/command.c.  Added that message
7980           to Irssi SILC client's message formats.
7981
7982         * Fixed CMODE command crash in client.  It now checks the
7983           amount of arguments correctly and does not crash.  The affected
7984           file is lib/silcclient/command.c.
7985
7986         * Do not create new channel automatically in silc_channels_join
7987           but check whether the channel by that name already exists.
7988           Affected file irssi/silc/core/silc-channels.c.
7989
7990         * Do not send the SERVER_SIGNOFF to router if the disconnected
7991           entity was the router.  Affected file silcd/server.c.
7992
7993         * Added the handling of the SERVER_SIGNOFF notify to the Irssi
7994           SILC client as it was missing from there.
7995
7996           Added the handling of the KICK notify to the Irssi SILC client
7997           as it was missing.  Added "you have been kicked" message to
7998           Irssi SILC client's message modules formats.
7999
8000           Added the handing of the KILL notify to the Irssi SILC client
8001           as it was missing.  Added the kill message module formats
8002           as well.
8003
8004           The affected file is irssi/src/silc/core/silc-channels.c.
8005
8006         * The router did not save the channel mode the server announced.
8007           Affected file silcd/packet_receive.c.
8008
8009         * Fixed a possible crash in INFO command in server.  If the
8010           server did not provide the server info it crashed.  Affected
8011           file silcd/command.c.
8012
8013 Sun Jun 17 15:26:05 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8014
8015         * Fixed the GETKEY command in the server to check also the
8016           global list.  Otherwise the GETKEY would not work correctly
8017           in normal SILC server.  Affected file silcd/command.c.
8018
8019 Sat Jun 16 18:00:00 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8020
8021         * Fixed GETKEY crash, it crashed if the command did not succseed.
8022
8023 Tue Jun 12 21:36:18 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8024
8025         * Redefined the SILC MP API in lib/silcmath/silcmp.h. The API
8026           is now real and not just an macro interface to GMP.
8027
8028           Removed the entire GMP from the source tree and imported new
8029           NSS MPI library instead.  Reason for removing GMP is that it is
8030           extremely large and compiles extremely slow.  The NSS MPI
8031           is only a few files and compiles in less than 10 seconds.
8032           The speed is also about the same as GMP.  The MPI is imported
8033           to lib/silcmath/mpi.
8034
8035           If the system has GMP installed we will still use the GMP.
8036           If it is not then the NSS MPI will be compiled.
8037
8038 Mon Jun 11 18:07:24 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8039
8040         * Merged a long nickname (127 characters long) crash bugfix from
8041           Irssi CVS tree.  Affected file irssi/src/core/misc.c.
8042
8043         * Merged a freed memory reference bugfix from Irssi CVS tree.
8044           Affected file irssi/src/core/commands.c.
8045
8046 Sun Jun 10 16:08:35 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8047
8048         * Added the server's public key sving and verification to the
8049           server when performing the SKE.  This was missing and the
8050           remote server's (or router's) public key was accepted without
8051           checking whether we have it previously or trust it at all.
8052           Affected file silcd/protocol.c.
8053
8054 Sat Jun  9 20:17:30 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8055
8056         * Check in the silc_server_timeout_remote if protocol is active
8057           and make sure that the protocol's final callback is called so
8058           that all memory if freed.  Affected file silcd/server.c.
8059
8060 Sat Jun  9 12:51:27 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8061
8062         * silc_server_whois_send_reply crashed the server if the nickname
8063           was 127 characters long.  Affected file silcd/command.c.
8064
8065 Thu Jun  7 16:29:56 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8066
8067         * Added sanity check to the silc_server_new_client. If the hostname
8068           is provided inside username then check that the provided hostname
8069           really is the same as the resolved one.  If the hostname was not
8070           resolved then check it from the public key.  Affected file is
8071           silcd/packet_receive.c.
8072
8073         * Fixed a fatal bug in Irssi SILC client. Do not send QUIT command
8074           if the server disconnected us and the connection is not valid
8075           anymore.  Affected file irssi/src/silc/core/silc-channels.c.
8076
8077         * Moved the silc_client_[chmode|chumode|chumode_char] away from
8078           the library to the lib/silcutil/silcutil.[ch].
8079
8080 Thu Jun  7 08:57:16 CEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8081
8082         * Close log file after open.  Affected file
8083           lib/silcutil/silclog.c.
8084
8085         * Check whether sock == NULL in silc_client_send_packet and return
8086           if it is.  Affected file lib/silcclient/silcclient.c.
8087
8088         * Check rec->entry == NULL in the Irssi SILC Client before
8089           sending the channel message.  Affecte file is
8090           irssi/src/silc/core/silc-servers.c.
8091
8092 Tue Jun  5 08:08:21 CEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8093
8094         * Merged a splitted window bugfix from Irssi CVS tree.  The
8095           affected file is irssi/src/fe-text/textbuffer-view.c.
8096
8097         * Fixed the ME, ACTION and NOTICE printing in Irssi Client.
8098           It did not print nickname.
8099
8100         * Improved the distributions system a bit.
8101
8102 Mon Jun  4 17:57:16 CEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8103
8104         * Merged /WINDOW bugfix from irssi CVS tree. Affected file is
8105           irssi/src/fe-text/gui-window.c.
8106
8107         * Fixed a fatal bug in Irssi SILC client. Crashed if sent message
8108           to in-active server.  The affected file is
8109           irssi/src/silc/core/client_ops.c.
8110
8111         * Resolve the client in USERS command reply if the entry does
8112           not have username resolved.  The affected file is
8113           lib/silcclient/command_reply.c.  Also, changed the IDENTIFY
8114           command to WHOIS command to really resolve stuff.  The USERS
8115           is not used any more in any critical section so WHOIS can
8116           be used even though it might be slower than IDENTIFY.
8117
8118         * Changed the lib/silcutil/silchashtable.h header to ROBODoc
8119           format.
8120
8121 Sun Jun  3 14:21:32 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8122
8123         * Changed the protocol API a bit more consistent in the
8124           lib/silccore/silcprotocol.[ch].
8125
8126         * Changed the following headers to ROBODoc format:
8127
8128                 lib/silccore/silcpayload.h
8129                 lib/silccore/silcprotocol.h
8130                 lib/silccore/silcsockconn.h
8131
8132           All core library headers are now formatted.
8133
8134 Sat Jun  2 10:45:09 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8135
8136         * Fixed a bug in Irssi SILC client; do not show that you are
8137           server/router operator if you really are not.  Affected file is
8138           irssi/src/silc/core/client_ops.c.
8139
8140         * Renamed silc_command_free_payload to silc_command_payload_free.
8141           Affected file lib/silccore/silccommand.h
8142
8143         * Added silcmath.h to include the prototoypes of various routines
8144           in the lib/silcmath.  Removed the old modinv.h, mpbin.h and
8145           silcprimegen.h.
8146
8147         * Changed the following headers to ROBODoc format:
8148
8149                 lib/silccore/silcchannel.h
8150                 lib/silccore/silccommand.h
8151                 lib/silccore/silcid.h
8152                 lib/silccore/silcidcache.h
8153                 lib/silccore/silcmode.h
8154                 lib/silccore/silcnotify.h
8155                 lib/silccore/silcpacket.h
8156                 lib/silcmath/silcmath.h
8157
8158 Fri Jun  1 22:19:37 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8159
8160         * Added checking to the server code not to start the server if
8161           ciphers and stuff are not configured properly.  Affected files
8162           silcd/serverconfig.[h] and silcd/server.c.
8163
8164         * Changed the layout of the header files of the public interfaces
8165           in the SILC libraries.  The new layout supports ROBODoc
8166           documentation tool (and some others) so that it is easy to create
8167           a library reference manual.  All the other headers and source
8168           code must still follow the CodingStyle document.  Also source
8169           code must not include these ROBODoc stuffs, only the headers.
8170           Furthermore, all public interface headers must now be named
8171           by using `silc' prefix, example: silcapi.h, silccipher.h.
8172           Some files were renamed due to this.  All the other headers
8173           must not be used as public interfaces.  I will update the
8174           CodingStyle document later.  Changed following headers, so far:
8175
8176                 lib/silcclient/silcapi.h
8177                 lib/silccore/silcauth.h
8178                 lib/silccore/silcprivate.h
8179                 lib/silccrypt/silcdh.h
8180
8181 Fri Jun  1 10:28:09 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8182
8183         * Updated TODO.
8184
8185         * Removed silc_client_packet_send_flush from the client library
8186           as it is not needed.  Affected file lib/silcclient/client.[ch].
8187
8188         * Added printing of message of unresolved authentication method
8189           to the Irssi SILC client.  Added it to the module formats.
8190           Removed the same message from the client library.
8191
8192 Thu May 31 13:57:33 CEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8193
8194         * Added new distribution feature, DISTLABEL.  Every distribution
8195           can define own preprocessor label that can be used in the
8196           source code.  For example: #ifdef SILC_DIST_CLIENT.  Affected
8197           file distributions, acconfig.h.pre and prepare.
8198
8199 Tue May 29 22:16:40 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8200
8201         * Added Makefile.defines_int to include the actual definitions
8202           for Makefile.defines.in.  Tested the new distribution system,
8203           created distributions and tested installation.
8204
8205         * Added AWAY message printing to the Irssi SILC client.  Added
8206           the messages to the irssi/src/fe-common/silc/module-formats.[ch].
8207
8208         * Added SCONNECT command to call the SILC's CONNECT command.
8209           Cannot use CONNECT directly since Irssi uses that internally.
8210           Affected file irssi/src/silc/core/silc-servers.c.
8211
8212           Added ACTION local command.  It is same as ME command but takes
8213           the channel as mandatory argument.
8214
8215           Rewrote some of the Irssi's help files to suite for SILC
8216           protocol.
8217
8218 Mon May 28 19:05:22 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8219
8220         * Added Makefile.defines[.in] that should for now on be included
8221           in all Makefile.am file in the source tree.  That file includes
8222           all common compilation definitions for SILC source tree.
8223
8224 Mon May 28 10:30:51 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8225
8226         * Minor changes to the ./prepare script to change the package
8227           name according the distribution name to the configure.in.
8228
8229 Sun May 27 22:24:57 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8230
8231         * Created new distribution system.  Added file `distributions'
8232           that defines all the distributions that can be created out of
8233           the SILC source tree.  The ./prepare script now reads that
8234           file to determine how to prepare the distributions.  The
8235           first argument to the ./prepare is the name of the distribution
8236           and second is the version of the distribution.  If given
8237           without arguments it creates the default (toolkit) distribution
8238           with the default version (defined in ./prepare).
8239
8240           All Makefile.am files that are subject to the distributions
8241           are now named as Makefile.am.pre.  These are ./Makefile.am
8242           and lib/Makefile.am.  Others may be changed later.
8243
8244 Sun May 27 15:57:17 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8245
8246         * Added invite list, ban list, some key management and connection
8247           error message printing to module formats in the Irssi SILC client.
8248
8249         * Added new silc_client_set_away_message to set the away message
8250           that is back to the person who sent private message.  The
8251           affected file lib/silcclient/silcapi.h and the
8252           lib/silcclient/client_prvmsg.c.
8253
8254 Sun May 27 12:39:48 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8255
8256         * Fixed the private message sending in the Irssi SILC client,
8257           added local command KEY to the Irssi SILC client.
8258
8259           Added key management and key agreement message formats to the
8260           irssi/src/fe-common/silc/module-formats.[ch].
8261
8262           Added USERS (alias WHO) printing, server/router operator
8263           indication and LIST command printing to the module formats.
8264
8265 Sat May 26 17:43:42 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8266
8267         * Fixed channel joining notify handling, cumode notify handling
8268           from Irssi SILC client.
8269
8270         * Added SILC specific module-formats to the Irssi SILC client so
8271           that SILC specific message hilighting, colors etc is possible.
8272           Affected file irssi/src/fe-common/silc/module-formats.[ch].
8273
8274           Added channel mode, channel user mode, actions, notices,
8275           whois and whowas printing to the the module-formats.c.
8276
8277         * Fixed a bug in channel deletion in the server.  The channel
8278           is not left to the cache even if the channel founder auth mode
8279           is set when there are no users anymore on the channel.  Affected
8280           file silcd/server.c.
8281
8282         * The silc_net_localhost now resolves the entire hostname including
8283           the domain name.  Affected file lib/silcutil/silcnet.c.
8284
8285 Sat May 26 12:13:37 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8286
8287         * Changed the ask_passphrase client operation to be ascynchronous.
8288           It has now a completion callback and a context that the
8289           application must call after it has got the passphrase from
8290           the user.  Affected files lib/silcclient/silcapi.h,
8291           lib/silcclient/protocol.c, lib/silcclient/command.c and
8292           silc/client_ops.c.
8293
8294           Added SilcAskPassphrase callback that the application calls
8295           to deliver the passphrase to the library.
8296
8297         * Changed the SKE protocol's SilcSKEVerifyCb to be asynchronous.
8298           The public key verification and especially a certificate
8299           verification is asynchronous procedure.
8300
8301           Added new SILC_SKE_STATUS_PENDING status to indicate the
8302           request is pending and a callback will be called to finalize
8303           the request.
8304
8305           Added also SILC_SKE_STATUS_PUBLIC_KEY_NOT_PROVIDED status to
8306           indicate that remote end did not send its public key (or
8307           certificate), even though we require it.  Added check for this
8308           condition in the SKE.  This was a security bug, now fixed.
8309
8310           Defined new SilcSKEVerifyCbCompletion callback that is called
8311           when the verification process is completed.
8312
8313           The affected files lib/silcske/silcske_status.h and
8314           lib/silcske/silcske.[ch].
8315
8316         * Changed the verify_public_key client operation to be async
8317           as well.  Defined SilcVerifyPublicKey callback that is used to
8318           indicate the success of the public key verification process.
8319
8320           Changed the server and client to use the new async client
8321           operations.
8322
8323         * Changed the Irssi SILC client's internal scheduler to be called
8324           twice as many times as it used to be.  As a result the client
8325           should be a bit faster now.  Affected file is
8326           irssi/src/silc/core/silc-core.c.
8327
8328         * Added support to Irssi SILC client of asynchronous public key
8329           verification and passphrase inquiry.  Affected file is
8330           irssi/src/silc/core/silc-core.c.
8331
8332 Fri May 25 14:38:38 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8333
8334         * Do not say "You have left channel %s" in client library.
8335           Moved it to the application.  Affected files are
8336           lib/silcclient/command.c and silc/client_ops.c.
8337
8338         * Fixed silc_client_get_clients.  Command context was not
8339           duplicated and was freed memory in the callback.  Affected
8340           file lib/silcclient/idlist.c.
8341
8342         * Do not say "you are now talking..." on JOIN command in the
8343           client library.  The appliation must handle it.
8344
8345         * Do not say ".. changed topic to" in command reply in the
8346           client libary.  The application must handle it.
8347
8348         * Fixed TOPIC command sending in the client library.
8349
8350         * Fixed a memory leak in silc_client_command_free in the file
8351           lib/silcclient/command.c.
8352
8353 Thu May 24 19:08:55 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8354
8355         * Imported a modified version of Irssi client to the source tree.
8356           The Irssi will be used to create a new client called
8357           Irssi SILC.  Imported to irssi/.
8358
8359           Added silc_core_init_finish function to the Irssi.  Affected
8360           file irssi/configure.in.
8361
8362           A lot changes in the Makefile.ams around the irssi tree.
8363
8364 Tue May 22 22:23:49 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8365
8366         * Do not rehash if the new size is same as the old size of the
8367           hash table, in the silc_hash_table_rehash*.  The affected file
8368           lib/silcutil/silchashtable.c.
8369
8370         * Replaced hash_table_del_by_context calls from the server
8371           (when channel->user_list and client->channels) to the
8372           hash_table_del as it is sufficient and faster.
8373
8374 Tue May 22 17:27:16 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8375
8376         * Added silc_hash_table_list, silc_hash_table_get and the
8377           SilcHashTableList structure to provide an alternative way to
8378           traverse the hash table.  The affected files are
8379           lib/silcutil/silchashtable.[ch].
8380
8381         * Changed the server's idlist routines to use the hash table
8382           routines to optimize the code.
8383
8384 Mon May 21 21:46:20 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8385
8386         * Replaced the client entry's `channel' list and channel entry's
8387           `user_list' list to hash tables for optimized lookup.  Changed
8388           the code to use the hash table interface around the code.
8389           Affected file lib/silcd/idlist.[ch].
8390
8391         * Added `auto_rehash' boolean argument to the function
8392           silc_hash_table_alloc to indicate whether the hash table should
8393           auto-rehash when it thinks is appropriate time.  It will
8394           increase the hash table size if the there is twice as much
8395           entries in the table than the size of the table, and will
8396           decrease the size if there are twice as less entries than
8397           the size of the table.
8398
8399 Mon May 21 09:51:11 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8400
8401         * Fixed silc_xxx_get_supported to not crash at some circumstances.
8402
8403 Sun May 20 13:45:58 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8404
8405         * silc_idcache_purge_by_context deletes the entry now by context
8406           as it is supposed to do.  Affected file lib/silccore/idcache.c.
8407
8408         * Send the ERR_NO_SUCH_NICK in the WHOIS command reply if the
8409           client is not anymore valid (WHOWAS givens the info) and not
8410           the ERR_NO_SUCH_CLIENT_ID if the nickname still exists.
8411
8412 Sat May 19 16:30:03 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8413
8414         * Removed the `data' and `data_len' arguments from the ID Cache
8415           interfaces and added `name' argument.  ID Cache does not handle
8416           anymore the binary data only a names associated with given ID.
8417
8418         * When hashing a Client ID with silc_hash_id the entire ID is
8419           not hashed anymore, instead only the hash of the Client ID is
8420           hashed.  This way we can access the Client ID from the cache
8421           with Client ID but with the hash of the ID (which is a hash of
8422           the nickname) as well without any difference in performance.
8423
8424           Added also silc_idcache_find_by_id_one_ext to do one on one
8425           searching when we have the actual ID.  Added also function
8426           silc_hash_client_id_compare.  The affected files are
8427           lib/silccore/idcache.[ch] and lib/silcutil/silcutil.[ch].
8428
8429         * When hashing the name associated with a ID it is always done
8430           in lowercase.  This way we can access the cache without worrying
8431           about case-sensitivity, even though, for example nicknames are
8432           case sensitive.
8433
8434         * Fixed a bug in server with channel message sending.  It put
8435           wrong ID type as destination ID.  The affected file
8436           silcd/packet_send.c.
8437
8438         * silc_idcache_del_by_context now deletes from all hash tables
8439           by context.  Affected file lib/silccore/idcache.c.
8440
8441 Fri May 18 17:42:00 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8442
8443         * Changed the client library to use the new ID Cache interface.
8444           Changes around the source tree.
8445
8446         * Added silc_hash_table_rehash_ext to rehash with specific
8447           hash function.  Affected file lib/silcutil/silchashtable.[ch].
8448
8449         * Added silc_hash_string_compare to compare two strings in the
8450           hash table.  Affected file lib/silcutil/silcutil.[ch].
8451
8452 Fri May 18 11:18:45 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8453
8454         * Added new function silc_idcache_del_by_context into the
8455           lib/silccore/idcache.[ch].
8456
8457         * Changed the server's ID list routines to use the new ID Cache
8458           interface.  Changes around the source tree.
8459
8460 Fri May 18 08:35:31 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8461
8462         * Added silc_hash_table_del[_by_context]_ext functions in to the
8463           lib/silcutil/silchashtable.[ch].
8464
8465           Removed silc_hash_table_find_all* routines and added new
8466           silc_hash_table_find_foreach to replace them.
8467
8468           Added silc_hash_table_replace_ext function as extended
8469           replacing function.  Separated the simple hash table interface
8470           from the extended hash table interface in the file
8471           lib/silcutil/silchashtable.h.
8472
8473         * Fixed minor bugs and changed it to use some of the new
8474           hash table functions in lib/silccore/idcache.c
8475
8476 Thu May 17 18:15:12 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8477
8478         * Added new function silc_hash_table_find_all to return all keys
8479           in the hash table by the specified key.  As the hash table is
8480           collision resistant it also makes it possible to have several
8481           duplicate keys in the hash table.  This function may be used to
8482           find all of the keys from the hash.
8483
8484           Added user_context arguments to the SilcHashFunction,
8485           SilcHashCompare and SilcHashDestructor to deliver user specified
8486           context.
8487
8488           Added new fuctions silc_hash_table_find[_all]_ext to do
8489           extended lookup with specified hash and compare functions and
8490           specified user contexts.
8491
8492           Added new function silc_hash_table_add_ext to add the key
8493           with specified hash function and user context.
8494
8495           Added new function silc_hash_table_foreach to traverse all
8496           entrys in the hash table.  Added SilcHashForeach callback
8497           function.
8498
8499           Added new function silc_hash_table_del_by_context to delete
8500           the entry only if the context associated with the key matches.
8501
8502           Affected files are lib/silcutil/silchashtable.[ch].
8503
8504         * Removed silc_hash_[server/client/channel]_id and added just
8505           silc_hash_id to the lib/silcutil/silcutil.[ch].  Added also
8506           silc_hash_id_compare to compare two ID's using as the hash table
8507           comparison function.  Added also silc_hash_data to hash
8508           binary data and silc_hash_data_compare to compare it.
8509
8510         * Removed silc_idlist_find_client_by_hash as it is not needed
8511           anymore.  Affected file silcd/idlist.[ch].
8512
8513         * Rewrote the entire ID Cache system (in lib/silccore/idcache.[ch])
8514           to use internally the SilcHashTable.  The new ID Cache is a lot
8515           faster than the old one.  Some of the ID Cache interface was also
8516           rewritten and obsolete and stupid functions were removed.
8517
8518 Wed May 16 23:03:30 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8519
8520         * Added entry_count field to the SilcHashTable to keep the number
8521           of the entries in the table.  Implemented the function
8522           silc_hash_table_rehash.  Added new function
8523           silc_hash_table_count.  Affected file lib/silcutil/silchashtable.c.
8524
8525           Fixed a minor bug in silc_hash_table_free.
8526
8527         * Added silc_hash_string, silc_hash_uint, silc_hash_ptr,
8528           silc_hash_client_id, silc_hash_server_id and silc_hash_channel_id
8529           into the lib/silcutil/silcutil.[ch].
8530
8531 Wed May 16 20:02:47 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8532
8533         * Implemented a collision resistant hash table into the
8534           lib/silcutil/silchashtable[ch].  See the header and the source
8535           for the SilcHashTable API.
8536
8537 Tue May 15 22:05:46 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8538
8539         * Merged dotconf version 1.0.2 into lib/dotconf.
8540
8541 Sun May 13 19:32:09 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8542
8543         * Do not compile anything in lib/silcsim/* if the SIM support
8544           is not enabled.  The tree should now compile without problems
8545           under cygwin.
8546
8547 Thu May 10 22:49:51 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8548
8549         * Compiled the SILC under cygwin.  Compiled and tested briefly
8550           without problems.  More tests needed.  The SIMs didn't compile
8551           though.
8552
8553         * Added various #ifdef HAVE_* stuff to lib/silccrypt/silrng.c.
8554
8555         * Fixed possible crash in silc_get_username in the
8556           lib/silcutil/silcutil.c.
8557
8558 Tue May  8 09:04:03 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8559
8560         * Fixed a va_arg in silc/client_ops.c.
8561
8562         * Oops, RC5 routines were named AES and caused some problems
8563           when not using SIM's.  Affected file lib/silccrypt/rc5.c.
8564
8565 Sun May  6 13:59:48 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8566
8567         * Added new SilcIDIP structure into the lib/silccore/id.h and
8568           replaced the old `ip' fields from all SILC ID's to that type.
8569           This is a step towards IPv6 support.
8570
8571           The silc_id_get_len takes now the ID as an extra argument.
8572           The silc_id_id2str, silc_id_str2id and silc_id_dup now supports
8573           both IPv4 and IPv6 based ID's.
8574
8575           The affected files are lib/silccore/id.[ch] and other files
8576           around the tree using these routines.
8577
8578         * Removed the ID length arguments in server from various
8579           silc_server_send_notify_* routines -> they are not needed
8580           anymore.
8581
8582 Sat May  5 13:56:33 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8583
8584         * Fixed memory leak in silc_encode_pem_file in the file
8585           lib/silcutil/silcutil.c.
8586
8587 Thu May  3 21:23:50 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8588
8589         * Check minor version as well in the SKE.  Affected files are
8590           silcd/protocol.c and lib/silcclient/protocol.c.
8591
8592         * Added --identifier option to the server so that an identifier
8593           can be when creating the public key for the server.  Affected
8594           file is silcd/silcd.c.
8595
8596         * Fixed minor decoding bug in silc_pkcs_decode_identifier in
8597           lib/silccrypt/silcpkcs.c.
8598
8599 Wed May  2 20:50:49 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8600
8601         * Register default ciphers and stuff when using -C option with
8602           the server.  Affected file sildc/silcd.c.
8603
8604         * Put back the servers public key filename format, it is better
8605           than the new one.  For now, the client keys are saved with the
8606           new filename format.  The affected file silc/client_ops.c.
8607
8608         * Implemented the Cipher API for the rest of the ciphers that
8609           did not implement it or implemented it the wrong way.
8610
8611 Wed May  2 13:31:26 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8612
8613         * Register default ciphers and stuff when using the -S option
8614           in the client.  Affected file silc/silc.c.  Same also when
8615           creating new key pair with -C option.
8616
8617 Tue May  1 14:18:13 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8618
8619         * Fixed the silc_verify_public_key client operation function to
8620           save the public keys differently.  The fingerprint is now
8621           used as filename and not the hostname.  This way also the
8622           client keys are saved uniquely and not with hostnames.  The
8623           affected file is silc/client_ops.c.
8624
8625         * Trimmed the silc_hash_fingerprint function to remove extra
8626           whitespaces from the end of the fingerprint.  The affected
8627           file is lib/silccrypt/silchash.c.
8628
8629         * Updated TODO.
8630
8631         * Added silc_cipher_register_default function to register all
8632           default ciphers.  It can be used when configuration files
8633           does not exist and the application does not want any specific
8634           ciphers in any specific order.
8635
8636           The SilcDList is now used as silc_cipher_list dynamically
8637           allocated cipher list.  Removed the static list all together
8638           and now all ciphers must be allocated to the dynamic list.
8639           The silc_cipher_alloc routine was changed to check only the
8640           dynamic list.
8641
8642           All silc_cipher_* routines that used to return int returns
8643           now bool.
8644
8645           The affected files lib/silccrypt/silccrypt.[ch].
8646
8647         * The same thing was done to silc_hash_* as for silc_cipher_*
8648           routines.  Affected files lib/silccrypt/silchash.[ch].
8649
8650         * The same thing was done to silc_pkcs_* as for silc_cipher_*
8651           routines.  Affected files lib/silccrypt/silcpkcs.[ch].
8652           Added also silc_pkcs_[un]register[_default] functions.
8653           Removed the data_context from the PKCS API.
8654
8655         * Added silc_hmac_register_default function to register default
8656           hmacs.  Affected files lib/silccrypt/silchmac.[ch].  Added also
8657           SILC_ALL_HMACS macro that can be used with silc_hmac_unregister
8658           to unregister all hmacs at once.
8659
8660         * Register the default ciphers, hash functions, PKCSs and HMACs
8661           if client's configuration file does not exist.  The affected
8662           file silc/silc.c.
8663
8664         * The client did not load the hash functions from the SIM
8665           modules at all.  Added support for this.  Affected file is
8666           silc/clientconfig.c.
8667
8668         * When decoding public key with silc_pkcs_public_key_decode, check
8669           the supported algorithm only if PKCS are registered.  Affected
8670           file lib/silccrypt/silcpkcs.c.  The same was done with the
8671           silc_pkcs_private_key_decode.
8672
8673         * Fixed the SILC List routines to keep the list always in order.
8674           It used to change the list's order when traversing the list but
8675           not it preserves the order.  Affected file lib/trq/silclist.h.
8676
8677 Mon Apr 30 17:29:03 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8678
8679         * Added the client library to use the SilcSocketConnection's
8680           reference counter (by silc_socket_dup) to prevent the bug that
8681           the socket object may be freed underneath async operation.
8682
8683         * The name resolv library checking fixes in the configure.in.pre.
8684           The patch by salo.
8685
8686         * Created new version of the protocol drafts for future
8687           development. The -03 drafts are the ones that will be changed
8688           in the trunk now and the -02 will remain as they are.
8689
8690         * Send list of CUMODE notifys to the router when announcing
8691           the channel users to the router.  Affected file silcd/server.c.
8692           If the router receiving channel founder CUMODE for a channel
8693           that already has channel founder it will send CUMODE notify
8694           to the sender to remove the channel founder rights from the
8695           announced client.  Affected file silcd/packet_receive.c.
8696
8697         * The CUMODE notify may now use Server ID as well as the entity
8698           who changes the mode.  Updated protocool specs.
8699
8700         * Updated INSTALL and README files.
8701
8702 Sun Apr 29 23:17:50 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8703
8704         * New web pages in the http://silc.pspt.fi.  The pages was
8705           designed by salo.
8706
8707         * Updated CREDITS.
8708
8709 Sun Apr 29 13:33:41 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8710
8711         * Implemented the [DenyConnectin] config section in the server.
8712           Added silc_server_config_denied_conn to check whether incoming
8713           connection is denied.  Affected file silcd/serverconfig.[ch].
8714
8715         * Do not check the ports when checking the incoming configuration
8716           data if the port is 0, meaning any.  Affected file is
8717           silcd/serverconfig.c.
8718
8719 Fri Apr 20 18:58:43 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8720
8721         * Fixed buffer overflow in silc_string_compare in the file
8722           lib/silcutil/silcutil.c.
8723
8724         * Fixed double free in silc_server_command_leave in the file
8725           silcd/command.c.
8726
8727 Fri Apr 20 14:00:11 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8728
8729         * Fixed the version checking in the server.  Affected file is
8730           silcd/protocol.c.
8731
8732 Thu Apr 19 19:52:46 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8733
8734         * Fixed the configuration data fetching when accepting new
8735           connections in the server.  Affected file silcd/server.c.
8736
8737 Thu Apr 19 11:40:20 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8738
8739         * Added `sender_entry' argument to the function
8740           silc_server_packet_relay_to_channel so that we can check
8741           whether some destination actually belongs to the same route
8742           the sender belongs (ie, we must not resend the packet to the
8743           sender).  Affected file silcd/packet_send.[ch].
8744
8745         * Added `servername' field to the SilcClientEntry in the server
8746           to hold the name of the server where client is from.  Affected
8747           file is silcd/idlist.h.
8748
8749 Wed Apr 18 22:19:03 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8750
8751         * Moved the channel message encrypting in the router betwen
8752           router connections from silc_server_channel_message to the
8753           silc_server_packet_relay_to_channel since we want to check
8754           whether we have anybody channel before encrypting anything.
8755           Affected files silcd/packet_[receive/send].c.
8756
8757 Tue Apr 17 21:18:19 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8758
8759         * Fixed the [AdminConnection] server config section to support
8760           multiple entries.  Affected file silcd/serverconfig.c.
8761
8762         * Added support into the server to check the validity of the
8763           incoming connection before executing any KE or authentication
8764           protocols.
8765
8766         * The connection configuration is now saved to the KE and
8767           connection auth protocol contexts and not fetched anymore in
8768           the protocol.  Affected files silcd/server.c, silcd/protocol.[ch].
8769
8770         * The local hosts listenning address and port is also resolved
8771           now when starting the server.  We want to have the socket object
8772           to include the real address and port for the listener.  Added
8773           new function silc_net_check_local_by_sock into the files
8774           lib/silcutil/silcnet.[ch].
8775
8776         * Fixed a broadcast bug in server -> do not broadcast if we
8777           are standalone.
8778
8779         * Fixed a routing bug.  Do not route broadcast packets ever.
8780           Broadcast packets must be processed always and not routed since
8781           they may be destined to some other host than yourself and thus
8782           would get routed without no good reason.  Affected file is
8783           silcd/server.c.
8784
8785         * Added function silc_server_config_is_primary_route to check
8786           whether primary router connection has been configured (a router
8787           configuration that we are initiating).  If there is not, we
8788           will assume that there is only two routers in the SILC network
8789           and we will use the incoming router connection as our primary
8790           route.  Affected files silcd/serverconfig.[ch], silcd/server.c.
8791
8792         * Changed the order of the broadcasting.  Broadcast _after_ the
8793           packet has been processed not before.  Affected file is
8794           silcd/server.c.
8795
8796         * Fixed a [ClientConnection] parsing bug.  The port was never
8797           parsed correctly thus resulting to port 0.  Affected file
8798           silcd/serverconfig.c.
8799
8800         * Fixed silc_server_send_notify_args -> it ignored the `broadcast'
8801           argument and did not set the broadcast packet flag.  Affected
8802           file silcd/packet_send.c.  Fixed same bug in the function
8803           silc_server_send_notify as well.
8804
8805         * If we receive NEW_ID packet for our own ID in the server, ignore
8806           the packet.
8807
8808 Mon Apr 16 12:10:33 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8809
8810         * Updated TODO.
8811
8812         * Removed the nickname from the Private Message Payload.
8813           Updated the code and the protocol specs.
8814
8815         * Updated protocol specs for submitting to the IETF.
8816
8817         * Tweaked the Random Number Generator a bit.  Affected file
8818           lib/silccrypt/silcrng.c.  Exported a new function
8819           silc_rng_[global]_add_noise which can be used to add more
8820           noise to the RNG.
8821
8822 Sat Apr 14 16:21:32 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8823
8824         * Do not parse packets with different timeout when protocol
8825           is active -> may cause problem with rekey.  Affected file
8826           silcd/server.c.
8827
8828         * When server receives signoff notify it must not create
8829           new channel key if the client is on any channels since the
8830           sender of the signoff notify will create it.
8831
8832 Fri Apr 13 17:12:46 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8833
8834         * Added printing of error messages during SKE protocol from the
8835           failure packet sent by server during SKE.  Affected file
8836           silc/client_ops.c.
8837
8838         * Removed the client's failure_callback handling with timeout
8839           and handle it immediately when received.
8840
8841         * The SKE library returned wrong type in SUCCESS and FAILURE
8842           packets.  They must be 32 bit MSB not 16 bit MSB.
8843
8844 Fri Apr 13 00:09:08 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8845
8846         * Ok, rewrote the logic of the re-key and now it seems to work.
8847           I tested it on high traffic with frequent re-keys without
8848           problems.  Added hmac_receive (and renamed hmac to hmac_send)
8849           in SilcClientConnection in lib/silcclient/client.h and
8850           in SilcIDListData in silcd/idlist.h.  Also, removed the
8851           SilcPacketParserContext's cipher and hmac fields as they are
8852           not needed anymore and actually caused some problems when
8853           the ciphers and hmac's changed underneath the packet parser.
8854
8855 Thu Apr 12 14:42:51 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8856
8857         * If re-key protocol is active then process the incoming packets
8858           synchronously since we must assure that icoming packets encrypted
8859           with the old key is processed before the new keys is set to
8860           use.  This is true other packets than for REKEY packets.
8861           Affected file silcd/server.c.  The same was done to client library
8862           as well, affected file lib/silcclient/client.c.
8863
8864 Thu Apr 12 12:01:52 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8865
8866         * Fixed bug in client and server to accept the force send if
8867           the packet is send from silc_[server/client]_packet_process
8868           function.  Otherwise the packets are never delivered, oops.
8869
8870 Wed Apr 11 22:10:15 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8871
8872         * Disable force sending of packets when REKEY protocol is active.
8873           We must assure that no packet is sent directly when rekey is
8874           performed.  All packets must be sent through packet queue.
8875           Added macro SILC_SERVER_IS_REKEY to silcd/server.h and
8876           SILC_CLIENT_IS_REKEY to lib/silcclient/client.h.  Affected
8877           function is silc_[server/client]_packet_send_real to check
8878           the situation.
8879
8880         * Replaced the SIM paths from example config files to
8881           /usr/local/modules.  Also, make install creates now
8882           /usr/local/silc/logs directory to hold all the SILC server
8883           logs.
8884
8885 Wed Apr 11 16:59:59 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8886
8887         * Made the configure.in.pre work on Solaris.  Patch by salo.
8888
8889         * Made all ciphers compatible with non-x86 machines.  Defined
8890           CBC mode macros into lib/silccrypt/ciphers_def.h.
8891
8892 Tue Apr 10 20:32:44 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8893
8894         * Fixed the make install.
8895
8896 Tue Apr 10 16:20:34 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8897
8898         * When MAC computation fails the silc_packet_decrypt returned 0
8899           even though it was supposed to return -1.  Fixed this.  The
8900           affected file is lib/silccore/silcpacket.c.
8901
8902         * Do not replace the config files in /etc/silc (in make install)
8903           if they already exist.  Affected file ./Makefile.am.
8904
8905         * Do not send re-key packets immediately but through packet queue.
8906           Affected file silcd/protocol.c and lib/silcclient/protocol.c.
8907
8908         * Changed silc_net_check_host_by_sock to return FALSE if the
8909           IP/DNS could not be resolved.  Though, it returns the IP address
8910           now even if it could not resolve it (but returns also FALSE).
8911           Affected file lib/silcutil/silcnet.[ch].
8912
8913 Mon Apr  9 21:54:44 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8914
8915         * Added silc_pkcs_decode_identifier to decode the public key's
8916           identifier.  Affected file lib/silccrypt/silpkcs.[ch].
8917           Added also silc_pkcs_free_identifier.  Added also new context
8918           SilcPublicKeyIdentifier.
8919
8920         * Added -S option to the silc client.  It is used to dump the
8921           contents of the specified public key file.
8922
8923         * Changed the PKCS api to return the public key length when
8924           setting the public key.
8925
8926         * Fixed a fatal bug in the public and private key file loading.
8927           Affected file lib/silccrypt/silcpkcs.c.
8928
8929         * Execute the packet parsing for client with zero (0) timeout
8930           if the protocol is active.  Affected file silcd/server.c.
8931
8932 Sun Apr  8 19:30:56 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8933
8934         * Made the key generation options to the silcd program.  Added
8935           -C option, equivalent to client's option.
8936
8937         * Added new [ServerKeys] config section to the server.  It
8938           configures the server's public and private key.
8939
8940         * Defined generic Public Key Payload into the protocol
8941           specification to send specific type of public keys and
8942           certificates.
8943
8944         * Defined new command SILC_COMMAND_GETKEY to fetch a client's
8945           public key or certificate.
8946
8947         * Implemented the GETKEY command to the server and to the
8948           client library and on user interface.
8949
8950 Sun Apr  8 01:37:21 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8951
8952         * Made preliminary `make install' work.
8953
8954 Thu Apr  5 17:42:30 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8955
8956         * Added SilcServerRekey context into silcd/idlist.h.
8957
8958         * Added the PFS support as defined in the specification to the
8959           SKE protocol.  Affected files lib/silcske/*.c.
8960
8961         * Added `ske_group' field to the SilcServerRekey context to hold
8962           the number of the SKE group that is used with PFS in re-key.
8963           Affected file silcd/idlist.h.
8964
8965         * Added PFS re-key support to the server.  Affected file is
8966           silcd/protocol.c.
8967
8968         * Added silc_protocol_cancel to cancel execution of the next
8969           state of the protocol.  Affected file is
8970           lib/silccore/silcprotocol.[ch].
8971
8972         * Added the re-key support with and without PFS to the client
8973           library.  Re-key is performed once in an hour, by default.
8974
8975           Added new protocol type SILC_PROTOCOL_CLIENT_REKEY.
8976           Added silc_client_rekey_callback and silc_client_rekey_final.
8977           Affected files are lib/silcclient/protocol.[ch] and
8978           lib/silcclient/client.[ch].
8979
8980         * Removed the `hmac_key' and `hmac_key_len' fields from the
8981           SilcClientConnection structure; not needed.  Affected file is
8982           lib/silcclient/client.h.
8983
8984         * Updated TODO.
8985
8986 Wed Apr  4 16:32:31 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8987
8988         * Do not ask whether user wants to use the negotiated private key
8989           for private messages, just use it.  Affected file is
8990           silc/local_command.c.
8991
8992         * Added `send_enc_key' and `enc_key_len' fields to the
8993           SilcIDListData structure since they are needed in the re-key
8994           phase.  Affected file is silcd/idlist.[ch].
8995
8996         * Implemented the simple re-key protocol into the server.
8997           Affected files silcd/server.c and silcd/protocol.[ch].  The
8998           re-key will be performed once in an hour, by default.
8999
9000           Added new protocol type SILC_PROTOCOL_SERVER_REKEY.
9001           Added silc_server_rekey, silc_server_rekey_callback and
9002           silc_server_rekey_final.
9003
9004         * Removed Tunneled flag from the protocol.  Updated the code
9005           and the specifications.
9006
9007         * Adde `pfs' field to the SilcIDListData to indicate whether
9008           the PFS is to be performed in the re-key.  Affected file is
9009           silcd/idlist.h.
9010
9011 Tue Apr  3 21:52:42 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9012
9013         * Defined uint8, int8, uint16, int16, uint32, int32, uint64 and
9014           int64 of at least the xintXX size.  If void * is less that 4
9015           bytes uint32 * will be used.  Defined bool as boolean.
9016
9017         * Changed _ALL_ unsigned long and unsigned int to uint32,
9018           unsgined short to uint16 in the source tree.
9019
9020         * Fixed a fatal bug in silc_server_remove_clients_by_server.  Do
9021           not handle clients that has entry->data.registered == FALSE.
9022           They are not in the network anymore.  Affected file is
9023           silcd/server.c.
9024
9025 Tue Apr  3 16:39:19 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9026
9027         * Implemented the sending of the SERVER_SIGNOFF notify in the
9028           server.  Affected file is silcd/server.c.
9029
9030         * Added silc_server_send_notify_args into silcd/packet_send.[ch].
9031           Added also silc_notify_payload_encode_args into the
9032           lib/silccore/silcnotify.[ch].
9033
9034         * Implemented ther SERVER_SIGNOFF notify handling in the server.
9035           Affected file silcd/packet_receive.c.
9036
9037         * Implemented the SERVER_SIGNOFF notify handling in the client
9038           library.  Affected file lib/silcclient/client_notify.c.  Also,
9039           implemnted the printing of the SERVER_SIGNOFF info to the
9040           application.  Affected file silc/client_ops.c.
9041
9042         * The silc_idlist_del_server now returns TRUE or FALSE to indicate
9043           if the deleting was successful.  Affected file silcd/idlist.[ch].
9044
9045         * Added support for public key authentication in the connection
9046           authentication protocol in the client library.  Affected file
9047           lib/silcclient/protocol.c.
9048
9049         * Changed the server's silc_idlist_get_clients_by_* interface
9050           to support already allocated array so that new entries may be
9051           added to pre-allocated array.  Affected file silcd/idlist.[ch].
9052           This fixes some bugs with WHOIS, WHOWAS and IDENTIFY commands
9053           and command replies.
9054
9055         * All command reply functions in the server now calls the
9056           pending command callback even if error occured.  This way the
9057           error will be delivered to the client as well.  Affected files
9058           silcd/command.c and silcd/command_reply.c.
9059
9060         * Fixed INFO command to return local server's info if no server
9061           was provided.  Affected file lib/silcclient/command.c.
9062
9063         * Removed RESTART command for good.  Updated the code and the
9064           protocol specs.
9065
9066         * Rewrote parts of the task system.  It is a bit simpler now.
9067           Removed unsued task priorities. The affected files are
9068           lib/silcutil/silctask.[ch].
9069
9070 Mon Apr  2 20:02:33 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9071
9072         * Moved the USERS printing from the library to the application.
9073           Affected files lib/silcclient/command.c and silc/client_ops.c.
9074
9075 Mon Apr  2 13:13:23 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9076
9077         * Updated TODO.
9078
9079         * Added channel key re-key support.  The re-key is perfomed
9080           only by the router and is done once in an hour.  Added `rekey'
9081           field to the SilcChannelEntry in the server.  Affected files
9082           silcd/server.c and silcd/idlist.h.
9083
9084         * Added silc_task_unregister_by_context into the file
9085           lib/silcutil/silctask.[ch].
9086
9087 Sun Apr  1 19:49:34 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9088
9089         * Added SILC_UMODE_GONE mode to indicate when the client is not
9090           present in the SILC network.  Added also support to the local
9091           command AWAY that will set this mode.  Added support of showing
9092           "xxx is gone" in WHOIS command.  The USERS command shows the
9093           gone status as well.
9094
9095         * Fixed setting server and router operator privileges in the
9096           server's UMODE command.  Affected file silcd/command.c.
9097
9098         * Merged the SKE KE1 and KE2 payloads into one payload.  The
9099           new KE payload is equivalent to the old KE2 payload.
9100
9101           Cleaned up the SKE Start Payload parsing.  It now uses the
9102           simple buffer unformatting to do the parsing.  A lot faster
9103           now.
9104
9105           Added new Mutual Authentication flag (SILC_SKE_SP_FLAG_MUTUAL)
9106           to the SKE that is used to indicate whether both of the SKE
9107           parties should perform authentication.  By default only the
9108           responder performs authentication.  By setting this flag also
9109           the initiator must do authentication.  By default it is unset
9110           since in normal SKE case, client to server connection, only
9111           the responder should do authentication.  When doing SKE between
9112           two clients both should perform authentication.  Updated the
9113           code and the protocol specs.
9114
9115         * A little fix to IDENTIFY command in the server.  Search the
9116           client first by hash not nickname.  Affected file is
9117           silcd/command.c.
9118
9119         * Fixed the silc_client_close_connection to support closing
9120           the client to client connections wihtout deleting too much
9121           data.  Affected file lib/silcclient/client.c.
9122
9123         * Fixed a fatal bug in server and client; if KE1 or KE2 packets
9124           are received if protocol used to be active but is not anymore
9125           the application would crash due to NULL pointer dereference.
9126           Affected files silcd/server.c and lib/silcclient/client.c.
9127
9128         * Added `hash' field to the SilcClientConnection to include
9129           the hash function negotiated in the SKE protocol.
9130
9131         * Added new channel mode SILC_CMODE_FOUNDER_AUTH that is used
9132           to set the channel founder authentication data.  A client can
9133           claim the founder rights later by providing the authentication
9134           data to the CUMODE command using SILC_CUMODE_FOUNDER mode.
9135           This way the channel founder can regain the channel founder
9136           privileges even it is left the channel.  This works only on
9137           local server and the client must be connected to the same
9138           server to be able to regain the founder rights.  Updated the
9139           protocol specs accordingly.
9140
9141           Added support to the CMODE command in the client to set the
9142           founder auth data.  Read the README to see how to set it.
9143
9144           Added support to the CUMODE command to claim the founder
9145           rights.  Read the README to see how to do it.
9146
9147           Added support for the founder authentication to the Channel
9148           Entry in the server.  Affected file silcd/idlist.h.
9149
9150           Added support for the SILC_CMODE_FOUNDER_AUTH mode in the
9151           server's CMODE command.  Affected file silcd/command.c.
9152
9153         * Added the following new functions into lib/silccore/silcauth.[ch]:
9154           silc_auth_get_method and silc_auth_get_data.
9155
9156         * The server now saves the remote hosts public key to the
9157           SilcIDListData pointer.  Affected file silcd/protocol.c.
9158
9159         * The normal server now does not remove the channel entry from
9160           the cache if the founder authentication data is set.  It used
9161           to remove it if the founder was the last one on the channel on
9162           the server and left the channel.  The auth data is saved and
9163           if the channel is re-joined later the old entry is used with
9164           the old auth data.  Affected files silcd/command_reply.c and
9165           silcd/server.c.
9166
9167         * Removed the `pkcs' field from the SilcIDListData structure
9168           in the server; it is not used.  Affected file silcd/idlist.h.
9169
9170 Sat Mar 31 15:38:36 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9171
9172         * Fixed packet processing on slow links.  Partial packets were
9173           never re-processed because the incoming data buffer was cleared
9174           by the application.  Application must not directly clear the
9175           sock->inbuf, the packet processing routines handle it.  Fixed
9176           this in client library and in server.
9177
9178 Fri Mar 30 16:35:27 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9179
9180         * Fixed the WHOIS and IDENTIFY send reply function to really
9181           check whether to send list or just one entry.  Affected file
9182           silcd/command.c.
9183
9184         * Cleaned up the LEAVE command's channel key distribution.  The
9185           affected file silcd/command.c.
9186
9187         * Changed CMODE_CHANGE's <Client ID> to <ID Payload> as server
9188           can enforce the channel mode as well.  In that case the ID
9189           includes the ID of the server.  The code now enforces the
9190           mode change if the router have different mode than the server.
9191
9192         * The notify client operation with CMODE_CHANGE notify can now
9193           return NULL client_entry pointer if the CMODE was not changed
9194           by client.  Application must check for this.
9195
9196         * Added <Server ID> argument to INFO command to support server
9197           info fetching by Server ID.
9198
9199         * Added silc_server_announce_get_channel_users to get assembled
9200           packets of channel users of the specified channel.  Affected
9201           file silcd/server.[ch].
9202
9203         * Fixed bug in CHANNEL_CHANGE notify in the server.  The new ID
9204           was freed underneath the ID Cache.
9205
9206         * Re-announce clients when the server received CHANNEL_CHANGE
9207           notify from the router.  Affected file silcd/packet_send.c.
9208
9209 Thu Mar 29 19:10:28 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9210
9211         * Fixed a fatal bug when client does /join 1 2 3 4 5 6 the server
9212           crashed since it did not handle the fact that there is no cipher
9213           called "3" and didn't check the error condition.  Now fixed.
9214
9215         * Added SILC_MESSAGE_FLAG_REQUEST message flag as generic request
9216           flag.  It can be used to send message requests.
9217
9218 Thu Mar 29 12:26:25 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9219
9220         * Implemented the RESTART command in the client.
9221
9222         * Added SILC_MESSAGE_FLAG_NOTICE message flag for informational
9223           notice type messages.  Added notice printing to the user
9224           interface.
9225
9226         * The channel keys are not re-generated if the channel's mode
9227           is PRIVKEY, ie private key on the channel exists.  Affected
9228           files silcd/server.c and silcd/command.c.
9229
9230         * Fixed a little bug in channel message delivery when channel
9231           private keys are set in the server.  Affected file is
9232           silcd/packet_send.c.
9233
9234         * Changed the setting on channel->on_channel = TRUE from the
9235           silc_client_save_channel_key to the JOIN command reply.  The
9236           key payload is not received if the private channel key is set.
9237           Affected file lib/silcclient/command_reply.c and the
9238           lib/silcclient/client_channel.c.
9239
9240         * When the CMODE_CHANGE notify is sent and the channel private
9241           key mode is removed the channel key must be re-generated in
9242           other cells as well.  Added this support for the router in the
9243           silcd/packet_receive.c.
9244
9245         * Added new local command NOTICE to send notice message on
9246           channel.  Affected file silc/local_command.[ch].
9247
9248 Wed Mar 28 23:55:54 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9249
9250         * Added new local command ME to the client.  It is used to send
9251           message to a channel with SILC_MESSAGE_FLAG_ACTION to indicate
9252           some action.  Affected file silc/local_command.[ch].
9253
9254         * Changed channel_message and private_message client operations
9255           to deliver the message flags to the application.  Added also
9256           the `flags' arguments to the silc_client_send_channel_message
9257           and silc_client_send_private_message functions.  Affected file
9258           silcapi.h.
9259
9260 Wed Mar 28 20:50:47 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9261
9262         * Redefined the Private Message Payload to support private message
9263           keys and to support the new private message flags.  Updated
9264           the protocol specs.  Flags makes it possible to have for example
9265           CTCP style messages.
9266
9267         * Added new type SilcPrivateMessagePayload and defined an API
9268           for it in the lib/silcclient/silcprivate.[ch].
9269
9270         * Tested private message private keys successfully.  Tested the
9271           private message key set, unset and list commands with the new
9272           KEY command.
9273
9274         * Redefined the Channel Message Payload to include the channel
9275           message flags (equal with private message flags) to support
9276           for example CTCP style messages.
9277
9278         * Defined some of the message (for channel and private message)
9279           flags.  Updated the protocol specs and added the flags to the
9280           lib/silccore/silcchannel.h.  The type is SilcMessageFlags.
9281
9282 Wed Mar 28 15:52:36 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9283
9284         * Added SilcKeyAgreementStatus type to the key agreement routines
9285           to indicate the current status and error if one occured.
9286           The status types are defined in the lib/silcclient/silcapi.h.
9287
9288         * Added new local command KEY that is used to set and unset private
9289           keys for channels, set and unset private keys for private messages
9290           with remote clients and to send key agreement requests and
9291           negotiate the key agreement protocol with remote client.  The
9292           key agreement is supported only to negotiate private message keys,
9293           it currently cannot be used to negotiate private keys for channels,
9294           as it is not convenient for that purpose.
9295
9296         * Fixed a minor pending callback setting bug in the function
9297           silc_client_get_client_by_id_resolve, now the function works.
9298           Affected file lib/silcclient/idlist.c.
9299
9300         * Added function silc_net_get_local_port to get local bound
9301           port by socket.  Added to lib/silcutil/silcnet.[ch].
9302
9303         * Added `sockets' and `sockets_count' fields to the SilcClient
9304           object.  They hold the sockets of the listenning sockets in
9305           the client.  Listenning sockets may be for example the key
9306           agreement server.  Affected file lib/silcclient/client.[ch].
9307           Added functions the silc_client_add_socket and the
9308           silc_client_del_socket.  They are exported to the application
9309           as well.
9310
9311         * Added ~./silc/clientkeys to support other client's public keys.
9312
9313         * Renamed verify_server_key client operation to verify_public_key
9314           and added one argument to indicate the type of the connection
9315           (server, client etc.).
9316
9317 Tue Mar 27 22:22:38 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9318
9319         * Added silc_server_connection_auth_request to handle the
9320           incoming CONNECTION_AUTH_REQUEST packet.  Affected file is
9321           silcd/packet_receive.[ch].
9322
9323         * Added silc_server_send_connection_auth_request into the
9324           silcd/packet_send.c to send the connection auth request packet.
9325
9326         * Cleaned up the silcd/protocol.c a bit and fixed some memory
9327           leaks.
9328
9329         * Fixed the public key authentication in responder side in the
9330           server.  The `auth_data' pointer includes the SilcPublicKey
9331           not the path to the public key.  Affected file silcd/protocol.c.
9332
9333         * Implemented the public key authentication in the initiator side
9334           in the server.  Affected file silcd/protocol.c.
9335
9336         * Removed the [RedirectClient] config section from the server
9337           configuration.  Is not needed and I don't want to implement it.
9338
9339 Tue Mar 27 12:49:56 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9340
9341         * Cleaned up the CMODE command in the server.  It now works
9342           correctly and supports all the modes defined in the protocol.
9343           Affected file is silcd/command.c.
9344
9345         * Added `hmac_name' field to the SilcChannelEntry in the server
9346           to hold the default HMAC of the channel.  It can be set when
9347           creating the channel (with JOIN command).  Affected files
9348           silcd/idlist.[ch].
9349
9350         * Added <cipher> and <hmac> argument to the CMODE_CHANGE notify
9351           type to indicate the change of the current cipher and hmac
9352           on the channel.  Client can safely ignore the <cipher> argument
9353           (if it chooses to do so) since the CHANNEL_KEY packet will
9354           force the channel key change anyway.  The <hmac> argument is
9355           important since the client is responsible of setting the new
9356           HMAC and the hmac key into use.
9357
9358         * Fixed the CMODE command in the client library as well.
9359
9360         * Tested CMODE command in router environment successfully.
9361
9362 Mon Mar 26 14:39:48 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9363
9364         * Show the version of the remote client (or server) when connecting
9365           to the server.  It is logged to the log file.  Affected file
9366           is silcd/protocol.c.
9367
9368         * Fixed the KILLED notify handling in the client library.  The
9369           client must be removed from all channels when receiving the
9370           KILLED notify.
9371
9372           Also, do not remove the client entry when giving the KILL
9373           command but when the KILLED notify is received.
9374
9375         * Removed silc_idlist_find_client_by_nickname from the server.
9376           Not needed anymore.  Affected files silcd/idlist.[ch].
9377
9378         * Implemented the CHANNEL_CHANGE notify type handling to the
9379           server.  Affected file silcd/server.c.
9380
9381         * Updated TODO.
9382
9383 Mon Mar 26 12:11:14 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9384
9385         * Added silc_server_send_notify_invite to send the INVITE
9386           notify between routers.
9387
9388         * Implemented the INVITE command correctly to the server.
9389
9390         * Implemented the INVITE notify type handling in the server.
9391
9392         * Implemented the INVITE command to the client library and on the
9393           user interface.
9394
9395 Sun Mar 25 20:27:09 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9396
9397         * Added function silc_server_get_client_resolve to find the
9398           client entry by ID from all ID lists and then resolve it
9399           (using WHOIS) if it cannot be found.  Affected file is
9400           silcd/server.[ch].
9401
9402 Sun Mar 25 13:52:51 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9403
9404         * Implemented the BAN command to the client library.
9405
9406         * The JOIN command in the server now checks the invite list
9407           and the ban list.
9408
9409         * Changed the silc_command_reply_payload_encode_va and the
9410           silc_command_payload_encode_va to support that if argument is
9411           NULL it ignores and checks the next argument.  Affected file
9412           lib/silccore/silccommand.c.
9413
9414         * Added silc_server_send_notify_ban to send the BAN notify
9415           type between routers.
9416
9417         * Chaned the silc_notify_payload_encode to support that if
9418           argument is NULL it ignores and checks the next argument.
9419           Affected file lib/silccore/silcnotify.c.
9420
9421         * Tested ban lists in router environment successfully.
9422
9423 Sat Mar 24 14:47:25 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9424
9425         * Implemented BAN command to the server, in silcd/command.[ch].
9426
9427         * Removed the BAN and INVITE_LIST modes from the CMODE command
9428           in the server code.
9429
9430         * Added function silc_string_match to regex match two strings.
9431           Affected files lib/silcutil/silcutil.[ch].
9432
9433 Fri Mar 23 22:02:40 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9434
9435         * Redefined parts of the SilcChannelEntry in the server to support
9436           the new ban and invite lists.
9437
9438 Fri Mar 23 16:25:11 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9439
9440         * Redefined the INVITE command.  The same command can be used to
9441           invite individuals to the channel but also to manage the invite
9442           list of the channel (to add to and remove from the invite list).
9443           Updated the protocol specs.
9444
9445         * Added new command SILC_COMMAND_BAN that can be used to manage
9446           the ban list of the channel.  Updated the protocol specs.
9447
9448         * Removed the channel modes: the SILC_CMODE_BAN and the
9449           SILC_CMODE_INVITE_LIST as they were a bit kludge to be included
9450           in the CMODE command.  The equivalent features are now available
9451           using INVITE and BAN commands.  Updated the protocol specs.
9452
9453         * Added new SILC_NOTIFY_TYPE_BAN notify type to notify routers
9454           in the network about change in the current ban list.  The notify
9455           type is not used by the client.
9456
9457         * Redefined parts of the SILC_NOTIFY_TYPE_INVITE command to
9458           support the invite lists.
9459
9460 Thu Mar 22 22:52:23 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9461
9462         * Added new function silc_string_regexify that converts string
9463           including wildcard characters into regex string that can
9464           be used by the GNU regex library.  Added into the file
9465           lib/silcutil/silcutil.[ch].
9466
9467           Added silc_string_regex_combine to combine to regex strings
9468           into one so that they can be used as one regex string by
9469           the GNU regex library.  Added into the file
9470           lib/silcutil/silcutil.[ch].
9471
9472           Added silc_string_regex_match to match two strings.  It returns
9473           TRUE if the strings match.  Added into lib/silcutil/silcutil.[ch].
9474
9475 Thu Mar 22 15:29:42 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9476
9477         * Imported GNU regex to the soruce tree into lib/contrib.
9478           Fixed some compiler warning from the regex.c.
9479
9480 Wed Mar 21 15:27:58 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9481
9482         * Fixed MOTD command in the server to work in router environment.
9483
9484         * Fixed the MOTD command in the client library to support
9485           the server argument in the command.
9486
9487         * Added `nickname_len' argument to the silc_idlist_add_client
9488           in the server, as the `nickname' argument may be binary data
9489           (it may be hash).
9490
9491         * Added silc_idlist_get_channels to return all channels from
9492           the ID list.
9493
9494         * Implemented LIST command to the server.  Affected file is
9495           silcd/command.c.
9496
9497         * Implemented the LIST command to the client library and on the
9498           user interface.
9499
9500         * Added [<user count>] argument to the LIST command reply.
9501           With private channels the user count is not shown.
9502
9503         * Updated TODO and README.
9504
9505 Tue Mar 20 21:05:57 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9506
9507         * The client entry's data.registered must be TRUE even with
9508           global client entry on global client list.  The data.registered
9509           is used to check whether the client is anymore in the network,
9510           for example with WHOWAS command so it must be valid.
9511
9512         * Fixed the WHOWAS command in the server.  It now actually works
9513           in router environment.  Added function into silcd/command_reply.c
9514           silc_server_command_reply_whowas_save.
9515
9516         * Added silc_idlist_purge function to the silcd/idlist.c
9517           to periodically purge the ID Cache.
9518
9519         * Fixed INFO command in the server.  It works now in router
9520           environment.  Added <server name> argument to the INFO command
9521           reply.  Updated the protocol specs.
9522
9523         * Fixed minor bug in silc_idcache_purge to not purge if the
9524           expire value is zero.
9525
9526         * Fixed various bugs in WHOIS and IDENTIFY command handling as
9527           they were buggy because of the WHOWAS information.
9528
9529         * Fixed local command MSG to handle the async resolving of
9530           the remote client properly.  It used to fail the first MSG.
9531           Affected file silc/local_command.c.
9532
9533         * Added `data_len' field to SilcIDCache context.
9534
9535 Tue Mar 20 16:29:00 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9536
9537         * Update TODO.  Todo in commands in the server.
9538
9539 Tue Mar 20 15:45:14 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9540
9541         * Added new notify type SILC_NOTIFY_TYPE_UMODE_CHANGE that is
9542           used by routers as broadcast packet to inform other routers
9543           about the changed user mode.
9544
9545           Implemented the notify handling in the server.  Affected file is
9546           silcd/packet_receive.c.  Added the function
9547           silc_server_send_notify_umode to the silcd/packet_send.[ch].
9548
9549         * Added new generic Channel Payload and deprecated the New Channel
9550           Payload.  The New Channel Payload is now the generic Channel
9551           Payload.
9552
9553         * Added new argument `mode' to the silc_server_send_new_channel
9554           as it is required in the Channel Payload now.
9555
9556         * Renamed the SilcChannelPayload to SilcChannelMessagePayload
9557           and created a new and real SilChannelPayload to represent the
9558           new generic Channel Payload.  Implemented the encode/decode
9559           for Channel Payload.  Affected file lib/silccore/silcchannel.[ch].
9560
9561         * Added silc_server_get_client_channel_list to return the list
9562           of channels the client has joined for WHOIS command reply.
9563           Affected file silcd/server.[ch].
9564
9565         * Implemented the channel list sending in the WHOIS command reply
9566           in server and in the client.
9567
9568           Implemented the channel list displaying on the user interface
9569           as well.  Affected file silc/client_ops.c.
9570
9571         * Added silc_channel_payload_parse_list to parse list of Channel
9572           Payloads.  It returns SilcDList list of SilcChannelPayloads.
9573           Client for example can use this function to parse the list of
9574           channels it receives in the WHOIS command reply.  The caller
9575           must free the list by calling silc_channel_payload_list_free.
9576           Affected files lib/silccore/silcchannel.[ch].
9577
9578 Mon Mar 19 21:39:15 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9579
9580         * Added one new argument <user mode> to the WHOIS command reply
9581           to return the mode of the user in SILC.  Updated the protocol
9582           specs.
9583
9584           Implemented it to the server and client.
9585
9586 Mon Mar 19 18:43:06 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9587
9588         * Fixed the mode printing on the user interface on joining.
9589           Affected file silc/client_ops.c.
9590
9591         * Implemented the UMODE command and user modes in general to the
9592           client library and to the user interface.
9593
9594         * Implemented the UMODE command to the server.
9595
9596         * The server now sends UNKNOWN_COMMAND error status if client sends
9597           unknown command.  Affected file silcd/command.c.
9598
9599         * All server commands now handle the command identifier the right
9600           way when sending the command reply to the client.  The client can
9601           use to identify the command replies with the identifier.
9602
9603 Mon Mar 19 16:13:07 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9604
9605         * Added silc_server_get_client_route to resolve the route to
9606           the client indicated by the client ID.  Affected file is
9607           silcd/server.[ch].
9608
9609         * Added silc_server_relay_packet as general function to relay
9610           packet to arbitrary destination.  This deprecates functions
9611           like _send_private_message_key, _relay_notify etc.  Affected
9612           file is silcd/packet_send.[ch].
9613
9614           Removed silc_server_send_key_agreement,
9615           silc_server_send_private_message_key and
9616           silc_server_packet_relay_notify functions from the file
9617           silcd/packet_send.[ch].
9618
9619         * Updated TODO.
9620
9621         * Implemented the SILC_NOTIFY_TYPE_KILLED notify handling in the
9622           server.  Affected file silcd/packet_receive.[ch].
9623
9624         * Implemented the KILL command to the client.  Implemented the
9625           SILC_NOTIFY_TYPE_KILLED notify handling in the client library.
9626           Affected files lib/silcclient/command[_reply].c and
9627           lib/silcclient/client_notify.c.  Implemented the KILL notify
9628           printing in the user inteface.
9629
9630         * Fixed a lot silc_parse_nick memory leaks from the client
9631           library in the file lib/silcclient/command.c.
9632
9633         * Changed the silc_server_send_notify_on_channels's `sender'
9634           argument from SilcSocketConnection to SilcClientEntry to
9635           check the sender as entry and not as connection object and not
9636           to send to the client provided as argument.  The affected file
9637           is silcd/packet_send.[ch].
9638
9639         * The notify packets that are destined directly to the client used
9640           to not to be processed by the server.  Now changed that and the
9641           server processes all notify packets.  After relaying the packet
9642           to the client the notify packet is processed in the server.
9643
9644         * The silc_server_free_client_data now checks whether there is
9645           pending outgoing traffic for the client and purges the data to
9646           the network before removing the client entry.
9647
9648 Sun Mar 18 21:02:47 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9649
9650         * Added SILC_NOTIFY_TYPE_KILLED notify type.  It is sent when
9651           an client is killed from the SILC Network.  Updated the protocol
9652           specs accordingly.
9653
9654           Added new function silc_server_send_notify_killed to the
9655           silcd/packet_send.[ch].
9656
9657         * Added function silc_server_packet_relay_notify to relay notify
9658           packets that are destined directly to a client.  In this case
9659           the server does not process the notify packets but merely relays
9660           it to the client.  Affected file silcd/packet_send.[ch].
9661
9662           Added also silc_server_packet_process_relay_notify to check
9663           whereto relay the notify.  Affected file is
9664           silcd/packet_receive.[ch].
9665
9666         * Implemented the KILL command to the server.
9667
9668         * Updated TODO.
9669
9670         * Added the backup schema desgined last fall to the protocol
9671           specs for everyone to see.  The specification is in the
9672           *-spec-xx.txt draft and the packet type definitions for the
9673           backup routers is in *-pp-xx.txt draft.  Thusly, added also
9674           new packet type SILC_PACKET_CELL_ROUTERS.
9675
9676         * A big security problem in the implementation discovered.  The
9677           signoff of an client did not cause new channel key generation
9678           which it of course should've done.  The channel keys must be
9679           always re-generated when client leaves (or signoffs) the channel.
9680           The silc_server_remove_from_channels funtion now handles
9681           the channel key re-generation.
9682
9683         * Added `sender' argument to the silc_server_send_notify_on_channels
9684           to not to send the client provided as argument.  Affected file
9685           silcd/packet_send.[ch].
9686
9687 Fri Mar 16 15:52:49 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9688
9689         * Implemented OPER and SILCOPER commands into the server and
9690           the client library.
9691
9692         * Added silc_auth_verify and silc_auth_verify_data to verify
9693           the authentication directly from the authentication payload.
9694           It supports verifying both passphrase and public key based
9695           authentication.  Affected file lib/silccore/silcauth.[ch].
9696
9697         * Added `hash' field to the SilcIDListData structure.  It is the
9698           hash negotiated in the SKE protocol.  Affected file is
9699           silcd/idlist.[ch].
9700
9701         * Slight redesigning of the SilcAuthPayload handling routines.
9702           Do not send SilcPKCS but SilcPublicKey as argument.
9703
9704         * Implemented the public key authentication support to the
9705           serverconfig.  The public key is loaded from the provided path
9706           and saved as authentication data to void * pointer.  Thus,
9707           changed the unsigned char *auth_data to void *auth_data;
9708
9709         * Fixed SHUTDOWN command to send the reply before the server
9710           is shutdown. :)  Affected file silcd/command.c.
9711
9712         * Fixed fatal bug in CONNECT command.  The hostname was invalid
9713           memory and server crashed.  Affected file silcd/command.c.
9714
9715         * Fixed fatal bug in CLOSE command.  The server_entry became
9716           invalid but was referenced later in the command.  Affected file
9717           silcd/command.c.
9718
9719 Thu Mar 15 12:46:58 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9720
9721         * Fixed fatal bug in failure packet handling.  Server ignored
9722           the failure and thus crashed when it came.
9723
9724         * Updated TODO.
9725
9726 Wed Mar 14 20:37:35 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9727
9728         * Added new SILC_CF_LAG_STRICT command flag that strictly forces
9729           that the command may be executed only once in (about) 2 seconds.
9730           The old SILC_CF_LAG flag is same but allows command bursts up
9731           to five before limiting.
9732
9733           Added the support for CF_LAG and CF_LAG_STRICT flags to the
9734           server code.  Various commands now includes the CF_LAG_STRICT
9735           flag to disallow any kind of miss-use of the command.
9736
9737         * Fixed the silc_buffer_unformat to not to allocate any data
9738           if the length of the data is zero.  It used to allocate the
9739           length + 1.  Affected file lib/silcutil/silcbuffmt.c.
9740
9741 Wed Mar 14 16:10:30 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9742
9743         * Changed the format of AdminConnection configuration section
9744           in the server.  Added username of the admin to the format.
9745           Affected files silcd/serverconfig.[ch].
9746
9747           Added silc_server_config_find_admin into silcd/serverconfig.[ch]
9748           to return admin configuration data by host, username and/or
9749           nickname.
9750
9751 Wed Mar 14 13:18:16 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9752
9753         * Implemented WHOWAS command to the server.  Added the functions:
9754
9755           silc_server_command_whowas_parse,
9756           silc_server_command_whowas_send_reply,
9757           silc_server_command_whowas_from_client and
9758           silc_server_command_whowas_from_server
9759
9760         * Added <Client ID> argument to the WHOWAS command reply.  Updated
9761           the protocol specs accordingly.
9762
9763         * Implemented WHOWAS command and command_reply to the client
9764           library.
9765
9766           Implemented the WHOWAS printing on the user interface.
9767
9768 Tue Mar 13 22:17:34 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9769
9770         * Added new argument to the WHOWAS command reply, the real name.
9771           It is an optional argument.  Updated the protocol specs.
9772
9773         * Added SilcIDCacheDestructor callback that is registered when
9774           the SilcIDCache is allocated.  The callback is called when
9775           an cache entry in the ID Cache expires, or is purged from the
9776           cache.  Added into lib/silccore/idcache.[ch].
9777
9778           Added silc_idlist_client_destructor to the silcd/idlist.[ch]
9779           to destruct the client entries when the cache entry expires.
9780           Other ID Cache's in server and in the client library ignores
9781           the destructor.
9782
9783         * If the ID Cache entry's `expire' field is zero then the entry
9784           never expires.  Added boolean `expire' argument to the
9785           silc_idcache_add function in the lib/silccore/idcache.[ch].
9786           If it is TRUE the default expiry value is used.
9787
9788         * Added silc_server_free_client_data_timeout that is registered
9789           when client disconnects.  By default for 5 minutes we preserve
9790           the client entry for history - for WHOWAS command.
9791
9792 Tue Mar 13 13:26:18 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9793
9794         * Added support to the server to enforce that commands are not
9795           executed more than once in 2 seconds.  If server receives
9796           commands from client more frequently, timeout is registered
9797           to process the commands.  Affected file silcd/command.c.
9798           Added new function silc_server_command_process_timeout.
9799
9800         * Changed NICK_NOTIFY handling in client library to check that
9801           if the client's nickname was changed, so there is no need to
9802           resolve anything from the server.
9803
9804         * Removed error printing from the WHOIS and IDENTIFY commands.
9805           If error occurs then it is ignored silently in the client library.
9806           The application, however, may map the received error to
9807           human readable error string.  The application currently maps
9808           the NO_SUCH_NICKNAME error to string.
9809
9810         * Made the command status message public to the application.  Moved
9811           them from lib/silcclient/command_reply.c to
9812           lib/silcclient/command_reply.h.  The application can map the
9813           received command status to the string with the
9814           silc_client_command_status_message function.
9815
9816         * Added check to the server to check that client's ID is same
9817           as the Source ID in the packet the client sent.  They must
9818           match.
9819
9820 Tue Mar 13 12:49:21 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9821
9822         * Added dist-bzip hook to the Makefile.am to make bzip2
9823           compressed distributions.
9824
9825 Mon Mar 12 18:43:38 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9826
9827         * Server now enforces the maximum length for the nickname and
9828           the channel as protocol specification dictates.  128 bytes for
9829           nickname and 256 bytes for channel name.
9830
9831         * Moved the WHOIS printing to the application.  The client libary
9832           does not print out the WHOIS information anymore, the application
9833           must do it.  Renamed silc_client_command_reply_whois_print to
9834           the silc_client_command_reply_whois_save.
9835
9836           The client's idle time is also sent to the application now, and
9837           the idle is shown on screen.
9838
9839         * Added silc_client_command_reply_identify_save to save the
9840           received IDENTIFY entries.
9841
9842         * Do not check for channel private keys in message sending and
9843           reception if the channel does not have the PRIVKEY mode set.
9844           Affected file lib/silclient/client_channel.c.
9845
9846 Sun Mar 11 20:25:06 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9847
9848         * Fixed a minor bug if WHOIS and IDENTIFY command parsing that
9849           just surfaced after chaning the JOIN procedure.
9850
9851 Sun Mar 11 14:59:05 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9852
9853         * Added silc_client_get_clients_by_list to get client entries
9854           from Client ID list, that is returned for example by JOIN
9855           and USERS command replies.  The application should use this
9856           function for example when JOIN command reply is received to
9857           resolve the clients already on the channel (library does not
9858           do that anymore as USERS command reply is not used in the JOIN
9859           procedure anymore).  Affected files lib/silcclient/silcapi.h and
9860           lib/silcclient/idlist.c.
9861
9862         * JOIN command reply and USERS command reply returns now SilcBuffer
9863           pointers instead of unsigned char pointers when returning
9864           the client list and mode list.
9865
9866         * Added <Client ID> argument to the JOIN command reply, mainly
9867           for the server to identify for which client the command was
9868           originally sent.  Updated protocol specs accordingly.
9869
9870         * Added SilcDlist private_key pointer to the SilcChannelEntry
9871           in the client to support the channel private keys.  Affected
9872           file is lib/silcclient/idlist.h.
9873
9874         * Added SilcChannelPrivateKey argument to the function
9875           silc_client_send_channel_message so that application can choose
9876           to use specific private ke if it wants to.  If it is not provided,
9877           the normal channel key is used, unless private keys are set.
9878           In this case the first (key that was added first) is used
9879           as the encryption key.
9880
9881         * Implemented the support for channel private key handling.
9882           Implemented the following functions:
9883
9884           silc_client_add_channel_private_key,
9885           silc_client_del_channel_private_keys,
9886           silc_client_del_channel_private_key,
9887           silc_client_list_channel_private_keys and
9888           silc_client_free_channel_private_keys
9889
9890           Affected file lib/silcclient/client_channel.c.
9891
9892         * Added the support for the private keys in the channel message
9893           sending and encryption and in the message reception and
9894           decryption.  Affected funtions are
9895           silc_client_send_channel_message and silc_client_channel_message.
9896
9897 Sat Mar 10 21:36:22 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9898
9899         * Added SKE's key verify callback to the client library's
9900           KE protocol context. Affected files lib/silcclient/protocol.[ch].
9901
9902         * Removed the statement that server (or router) must send USERS
9903           command reply when joining to the channel so that the client
9904           knows who are on the channel.  Instead, the client list and
9905           client's mode list is now sent in the JOIN command reply to the
9906           client who joined channel.  This is better solution.
9907
9908         * Added function silc_server_get_users_on_channel and function
9909           silc_server_save_users_on_channel to the silcd/server.[ch].
9910
9911         * Removed function silc_server_command_send_users from the
9912           silcd/command.c.
9913
9914         * Do not show topic on the client library anymore.  The topic is
9915           sent in the command reply notify to the application and the
9916           application must show the topic now.
9917
9918 Sat Mar 10 00:07:37 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9919
9920         * Added client searching by nickname hash into the IDENTIFY and
9921           WHOIS commands in the server as they were clearly missing from
9922           them.  Affected file is silcd/command.c.
9923
9924         * Fixed a bug in private message receiving in the client library.
9925           The remote ID was freed and it wasn't supposed, now it is
9926           duplicated.
9927
9928 Fri Mar  9 12:40:42 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9929
9930         * Minor fix to the channel payload; allocate the data area, as it
9931           needs to be of specific length.
9932
9933         * If the key agreement port is zero then the operating
9934           system will define the bound port.  Affected files are
9935           lib/silcclient/silcapi.h and lib/silcclient/client_keyagr.c.
9936
9937         * Added new function silc_channel_payload_decrypt into the file
9938           lib/silccore/silcchannel.[ch].
9939
9940         * Moved the channel message etc, check from silc_packet_decrypt
9941           to applications.  The library calls now a generic
9942           SilcPacketCheckDecrypt callback which is to return TRUE or FALSE
9943           when the packet is either normal or special.  This was done to
9944           allow more wide range of checking that was not allowed when
9945           the code was in library.  Now applications can do virtually any
9946           checks to the packet and return to the library the decision how
9947           the packet should be processed.  Affected files are
9948           lib/silccore/silcpacket.[ch].
9949
9950           Added silc_server_packet_decrypt_check to the server and
9951           silc_client_packet_decrypt_check to the client library.
9952
9953         * Added silc_server_packet_send_srcdest into silcd/packet_send.[ch]
9954           to send with specified source and destination information.
9955
9956         * Channel message delivery between routers was broken after the
9957           channel key distribution was fixed earlier.  The channel key
9958           was used be to distributed to other routers as well which is not
9959           allowed by the protocol.  Now this is fixed and channel keys
9960           really are cell specific and the channel message delivery between
9961           routers comply with the protocol specification.
9962
9963         * Fixed various commands in server to check also the global list
9964           for the channel entry and not just the local list.  The affected
9965           file silcd/command.c.
9966
9967 Thu Mar  8 21:39:03 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9968
9969         * Added assert()s to buffer formatting and unformatting routines
9970           to assert (if --enable-debug) when error occurs.  Affected
9971           file: lib/silcutil/silcbuffmt.c.
9972
9973         * Changed to auto-reconnect to check whether the remote host is
9974           router and register the re-connect timeout if it is.  It used
9975           to check that whether we are normal server, but router must do
9976           auto-reconnect with another router as well.  Affected file
9977           silcd/server.c.
9978
9979         * Removed the [<key len>] option from CMODE command as the cipher
9980           name decides the key length, nowadays.  See the defined ciphers
9981           from the protocol specification.
9982
9983         * Added [<hmac>] option to the CMODE command to define the HMAC
9984           for the channel.  Added SILC_CMODE_HMAC channel mode.
9985
9986         * Added [<hmac>] option for the JOIN command so that user can
9987           select which HMAC is used to compute the MACs of the channel
9988           messages.
9989
9990         * Added Hmac field to the Channel Message Payload.  The integrity
9991           of plaintext channel messages are now protected by computing
9992           MAC of the message and attaching the MAC to the payload.  The
9993           MAC is encrypted.  Now, it is clear that this causes some
9994           overhead to the size of the packet but rationale for this is that
9995           now the receiver can verify whether the channel message decrypted
9996           correctly and also when private keys are set for the channel the
9997           receiver can decrypt the packet with several keys and check from
9998           the MAC which key decrypted the message correctly.
9999
10000         * Added silc_cipher_encrypt and silc_cipher_decrypt into the
10001           lib/silccrypt/silccipher.[ch].
10002
10003         * Added silc_hash_len to return the digest length into the
10004           lib/silcrypt/silchash.[ch].
10005
10006         * Rewrote parts of Silc Channel Payload interface in the
10007           lib/silccore/silcchannel.[ch].  The encode function now also
10008           encrypts the packet and parse function decrypts it.
10009
10010 Wed Mar  7 20:58:50 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10011
10012         * Fixed a minor formatting bug in the SKE's key material processing.
10013           It actually might have processed the keys wrong way resulting
10014           into wrong keys.
10015
10016         * Redefined the mandatory HMAC algorithms and added new algorithms.
10017           Added hmac-sha1-96 and hmac-md5-96 which are normal hmac-sha1
10018           and hmac-md5 truncated to 96 bits.  The mandatory is now
10019           hmac-sha1-96.  Rest are optional (including the one that used
10020           to be mandatory).  Rationale for this is that the truncated HMAC
10021           length is sufficient from security point of view and can actually
10022           make the attack against the HMAC harder.  Also, the truncated
10023           HMAC causes less overhead to the packets.  See the RFC2104 for
10024           more information.
10025
10026         * Added new [hmac] configuration section.  The SKE used to use
10027           the hash names (md5 and sha1) in the SKE proposal as HMCAS which
10028           is of course wrong.  The official names that must be proposed in
10029           the SKE are the ones defined in the protocol specification
10030           (hmac-sha1-96 for example).  The user can configure any hmac
10031           using any hash function configured in the [hash] section.  At
10032           least, the mandatory must be configured.
10033
10034           Rewrote the HMAC interface in lib/silccrypt/silchmac.[ch].
10035
10036         * Added HMAC list to the SKE proposal list.  It has now both
10037           hash algorithm list and HMAC list.  This makes the protocol
10038           incompatible with previous versions.  The SKE now seems to work
10039           the way it is supposed to work, for the first time actually.
10040
10041         * Defined plain Hash algorithms to the protocol specification.
10042           Added sha1 and md5.
10043
10044 Tue Mar  6 15:36:11 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10045
10046         * Implemented support for key agreement packets into the server.
10047           Added functions silc_server_key_agreement and
10048           silc_server_send_key_agreement.  Other than these functions,
10049           server has nothing to do with this packet.
10050
10051         * Added support for private message key packets into the server.
10052           Added functions silc_server_private_message_key and
10053           silc_server_send_private_message_key.
10054
10055         * Updated TODO.
10056
10057         * Changed the silc_[client|server]_protocol_ke_set_keys to be
10058           called in the protocol's final callback instead in the END
10059           protocol state.  This makes a little more sense and in the same
10060           time in client we can use the same protocol routines for normal
10061           key exchange and to key agreement packet handling as well.
10062
10063         * Added to both client's and server's KE protocol context the
10064           SilcSKEKeyMaterial pointer to save the key material.  We will
10065           bring the key material to the protocol's final callback by doing
10066           this.  The final callback must free the key material.
10067
10068         * Added SKE's packet_send callback into client's KE protocol
10069           context so that the caller can choose what packet sending function
10070           is used.  This way we can use different packet sending when
10071           doing normal SKE when doing key agreement packet handling (in
10072           the key agreement packet handling we do not want to encrypt
10073           the packets).
10074
10075         * Implemented the responder side of the key agreement routines
10076           in the client.  The client can now bind to specified port and
10077           accept incoming key negotiation.  The key material is passed
10078           to the application after the protocol is over.
10079
10080         * Implemented the processing of incoming Key Agreement packet
10081           in the client.  Added function silc_client_key_agreement to
10082           process the packet.
10083
10084         * Implemented the intiator side of the key agreement routines
10085           in the client.  The client can now initiate key agreement with
10086           another remote client.  The key material is passed to the
10087           application after the protocol is over.
10088
10089         * Created client_keyagr.c to include all the key agreement
10090           routines.
10091
10092         * Added macro SILC_TASK_CALLBACK_GLOBAL which is equal to the
10093           SILC_TASK_CALLBACK except that it is not static.
10094
10095         * Created client_notify.c and moved the Notify packet handling
10096           from the client.[ch] into that file.
10097
10098         * Created client_prvmsg.c and moved all private message and
10099           private message key routines from the client.[ch] into that file.
10100
10101         * Create client_channel.c and moved all channel message and
10102           channel private key routines from the client.[ch] into that file.
10103
10104         * Changed silc_client_get_client_by_id_resolve to resolve with
10105           WHOIS command instead of IDENTIFY command, in the file
10106           lib/silclient/idlist.c.
10107
10108 Mon Mar  5 18:39:49 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10109
10110         * Implemented the SKE's responder side to the Client library.
10111
10112         * When FAILURE is received to the protocol do not trust it
10113           blindly.  Register a timeout to wait whether the remote closes
10114           the connection as it should do it, only after that process the
10115           actual failure.  This was changed to both client and server.
10116
10117         * Added client_internal.h to include some of the structures
10118           there instead of client.h in lib/silcclient/.
10119
10120         * Added function silc_task_unregister_by_callback to unregister
10121           timeouts by the callback function.
10122
10123 Sat Mar  3 19:15:43 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10124
10125         * Some "Incomplete WHOIS info" errors has been appearing on the
10126           log files.  Took away the entry->userinfo check from WHOIS
10127           reply sending.  The entry->userinfo is now " " if client did not
10128           provide one.  I thought this was fixed earlier but something
10129           is wrong still.  Let's see if the error still appears.
10130
10131 Wed Feb 28 20:56:29 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10132
10133         * Fixed a minor bug in the login when the channel key is
10134           re-generated in the server.  It used to generate the key in
10135           wrong order and thus caused problems in the channel traffic.
10136
10137         * Fixed a minor bug in channel key distsribution after
10138           KICK command.  The key was not sent to the router even though
10139           it should've been.
10140
10141 Tue Feb 27 20:24:25 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10142
10143         * Added silc_ske_process_key_material_data as generic routine
10144           to process any key material as the SILC protocol dictates.  The
10145           function is used by the actual SKE library but can be used by
10146           applications as well.  This relates to the private message keys
10147           and the channel private keys since they must be processed the
10148           same way the normal SILC session keys.  The protocol dictates
10149           this.  Affected files: lib/silcske/silcske.[ch].
10150
10151           Added also silc_ske_free_key_material to free the
10152           SilcSKEKeyMaterial structure.
10153
10154         * Defined silc_cipher_set_key function to set the key for
10155           cipher without using the object's method function.  The affected
10156           files: lib/silccrypt/silccipher.[ch].
10157
10158         * Implemented silc silc_client_add_private_message_key,
10159           silc_client_add_private_message_key_ske,
10160           silc_client_del_private_message_key,
10161           silc_client_list_private_message_keys and
10162           silc_client_free_private_message_keys functions in the
10163           client library.
10164
10165           Added functions silc_client_send_private_message_key to send
10166           the Private Message Key payload and silc_client_private_message_key
10167           to handle incoming Private Message Key payload.
10168
10169         * Added Cipher field to the Private Message Key payload to set
10170           the cipher to be used.  If ignored, the default cipher defined
10171           in the SILC protocol (aes-256-cbc) is used.
10172
10173 Tue Feb 27 13:30:52 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10174
10175         * Removed lib/silcclient/ops.h file.
10176
10177           Redefined parts of the SILC Client Library API. Created new
10178           file silcapi.h that deprecates the ops.h file and defines the
10179           published Client Library API.  Defined also private message key
10180           API and channel private key API into the file.
10181
10182           This is the file that the application must include from the
10183           SILC Client Library.  Other files need not be included by
10184           the application anymore.
10185
10186         * Added new key_agreement client operation callback and also
10187           defined the Key Agreement library API for the application.
10188
10189 Tue Feb 27 11:28:31 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10190
10191         * Added new packet type: SILC_PACKET_KEY_AGREEMENT.  This packet
10192           is used by clients to request key negotiation  between another
10193           client in the SILC network.  If the negotiation is started it
10194           is performed using the SKE protocol.  The result of the
10195           negotiation, the secret key material, can be used for example
10196           as private message key.
10197
10198           Implemented the Key Agreement payload into the files
10199           lib/silccore/silauth.[ch].
10200
10201 Mon Feb 26 12:13:58 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10202
10203         * Redefined ciphers for the SILC protocol.  Added some new ciphers
10204           and defined the key lengths for the algorithms.  Changed the
10205           code accordingly.  The default key length is now 256 bits.
10206
10207         * Fixed SKE key distribution function silc_ske_process_key_material
10208           when the key length is more than 128 bits.  The default key
10209           length in SILC is now 256 bits.
10210
10211         * Added new command status type: SILC_STATUS_ERR_UNKOWN_ALGORITHM
10212           to indicate unsupported algorithm.
10213
10214         * Renamed rijndael.c to aes.c and all functions as well.
10215
10216         * Fixed a long standing channel key setting bug in client library.
10217           Weird that it has never surfaced before.
10218
10219         * Fixed bug in channel deletion.  If the entire channel is removed
10220           then it must also delete the references of the channel entry
10221           from the client's channel list as the client's channel entry and
10222           the channel's client entry share same memory.
10223
10224 Sun Feb 25 20:47:29 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10225
10226         * Implemented CONNECT and SHUTDOWN commands in the client.
10227
10228         * Implemented CLOSE command to the client.
10229
10230         * Added the function silc_idlist_find_server_by_name into the
10231           files silcd/idlist.[ch].
10232
10233           Added the function silc_idlist_find_server_by_conn into the
10234           files silcd/idlist.[ch].
10235
10236 Sat Feb 24 23:45:49 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10237
10238         * DIE command was renamed to SHUTDOWN.  Updated the both code
10239           and protocol specs.
10240
10241         * Defined SILC_UMODE_NONE, SILC_UMODE_SERVER_OPERATOR and
10242           SILC_UMODE_ROUTER_OPERATOR modes into lib/silccore/silcmode.h.
10243
10244         * Implemented CONNECT, CLOSE and SHUTDOWN commands to the server
10245           side.
10246
10247         * Added function silc_server_create_connection function to create
10248           connection to remote router.  My server implementation actually
10249           does not allow router to connect to normal server (it expects
10250           that normal server always initiates the connection to the router)
10251           so the CONNECT command is only good for connecting to another
10252           router.
10253
10254 Sat Feb 24 16:03:45 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10255
10256         * Added SILC_NOTIFY_TYPE_KICKED to indicate that the client
10257           or some other client was kicked from the channel.
10258
10259           Implemented the handling of the notify type to both client
10260           and server.
10261
10262           Implemented silc_server_send_notify_kicked to send the KICKED
10263           notify.  It is used to send it to the server's primary router.
10264
10265         * Implemented the KICK command into server and client.
10266
10267         * Added `query' argument to the silc_idlist_get_client function
10268           to indicate whether to query the client from server or not if
10269           it was not found.
10270
10271         * Added new command status type SILC_STATUS_ERR_NO_CHANNEL_FOPRIV
10272           to indicate that the client is not channel founder.
10273
10274         * Updated TODO.
10275
10276 Sat Feb 24 00:00:55 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10277
10278         * Removed the rng context from SilcPacketContext structure and
10279           changed that the packet routine uses the Global RNG API.
10280
10281 Fri Feb 23 11:22:57 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10282
10283         * Added support for quit message that client can "leave" on the
10284           channel when it quits the SILC.  It is ditributed inside the
10285           SILC_NOTIFY_TYPE_SIGNOFF notify type.
10286
10287           Added silc_server_free_client_data that will take the
10288           signoff message as argument.
10289
10290         * Changed SKE routines to use the silc_pkcs_sign/verify routines.
10291
10292 Thu Feb 22 23:05:36 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10293
10294         * Updated parts of the protocol specification to keep it up
10295           to date.
10296
10297 Thu Feb 22 15:08:20 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10298
10299         * Added List flag (SILC_PACKET_FLAG_LIST) to indicate list of
10300           payloads in one packet.
10301
10302         * Deprecated following packet types: NEW_ID_LIST, NEW_CHANNEL_LIST,
10303           NEW_CHANNEL_USER_LIST, SET_MODE and SET_MODE_LIST.  List packets
10304           use now the new List flag.
10305
10306         * Also deprecated the following packet types: REPLACE_ID,
10307           NEW_CHANNEL_USER and REMOVE_CHANNEL_USER packet types.
10308
10309         * Added list support for Notify packet in server.
10310
10311         * Added silc_server_send_notify_channel_change to send the
10312           CHANNEL_CHANGE notify type to replace channel ID's.  Deprecates
10313           the silc_server_send_replace_id.
10314
10315         * Added silc_server_send_notify_nick_change to send the
10316           NICK_CHANGE notify type.  Deprecates the function
10317           silc_server_send_replace_id.
10318
10319         * Added silc_server_send_notify_join to send the JOIN notify type.
10320           Deprecates the function silc_server_send_new_channel_user.
10321
10322         * Added silc_server_send_notify_leave to send LEAVE notify type.
10323           Deprecates the function silc_server_send_remove_channel_user.
10324
10325         * Added silc_server_send_notify_cmode and
10326           silc_server_send_notify_cumode to send CMODE and CUMODE notify
10327           types.  Deprecates the silc_server_send_set_mode function.
10328
10329         * Added SERVER_SIGNOFF notify type to indicate that server has
10330           quit.  This means that all clients on the channel from that
10331           server will drop.  This can be also used when netsplit happens.
10332
10333           Deprecated REMOVE_ID packet type since it is not needed anymore
10334           even from server.
10335
10336           Added silc_server_send_notify_server_signoff to send the
10337           SERVER_SIGNOFF notify type.  Deprecates the function
10338           silc_server_send_remove_id.
10339
10340           Added also silc_server_send_notify_signoff to send the
10341           SIGNOFF notify type.
10342
10343         * Employed the PKCS #1. It is the mandatory way to do RSA in the
10344           SILC protocol from this day on.  Changed the protocol
10345           specification as well.
10346
10347         * Added silc_server_send_notify_topic_set to send TOPIC_SET
10348           notify type.  It is used between routers to notify about
10349           topic changes on a channel.
10350
10351         * Added silc_id_dup into lib/silccore/id.[ch] to duplicate
10352           ID data.
10353
10354         * Partly updated the protocol specification to comply with the
10355           changes now made.  It is still though a bit outdated.
10356
10357         * The JOIN notify type now takes one extra argument <Channel ID>.
10358           The packet used to be destined to the channel but now the
10359           JOIN type may be sent as list thus it is impossible to
10360           destine it to any specific channel.  By adding this argument
10361           it is again possible.
10362
10363 Wed Feb 21 22:39:30 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10364
10365         * Added CREDITS file.  The CHANGES and CREDITS file will appear
10366           in the distribution as well.
10367
10368 Wed Feb 21 14:17:04 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10369
10370         * Implemented CMODE_CHANGE, CUMODE_CHANGE and TOPIC_SET notify
10371           types in the server's silcd/packet_receive.c.
10372
10373         * Implemented CMODE and CUMODE to work in router environment.
10374
10375         * Fixed minor encoding and decoding buglet from the
10376           lib/silccore/silcmode.c.
10377
10378         * Fixed buffer overflow from lib/silcclient/command.c in USERS
10379           command parsing.
10380
10381 Wed Feb 21 12:44:00 EET 2001  Mika Boström <bostik@lut.fi>
10382
10383         * Changed all SilcConfigServer* and silc_config_server* to
10384           SilcServerConfig* and silc_server_config*, respectively.
10385           Patch by Bostik.
10386
10387 Wed Feb 21 00:10:00 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10388
10389         * Associated the ID (client or server ID) to the Authentication
10390           Payload to avoid any possibility of forging.  Updated the
10391           protocol specification and the code accordingly.
10392
10393 Tue Feb 20 14:14:14 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10394
10395         * The RSA key length is now save to the RsaKey context in the
10396           key generation process in lib/silccrypt/rsa.c.  The key length
10397           is now used to figure out the maximum size of the block allowed
10398           to be encrypted/signed.
10399
10400         * Added silc_mp_mp2bin_noalloc into lib/silcmath/mpbin.[ch].  It
10401           is equivalent to the silc_mp_mp2bin but does not allocate any
10402           memory.
10403
10404         * Changed silc_mp_mp2bin API to take length argument.  If it is
10405           non-zero then the buffer is allocated that large.  If zero, then
10406           the size is approximated using silc_mp_sizeinbase, which however
10407           is not relieable.
10408
10409         * Created Global RNG API which is global RNG that application can
10410           initialize.  After initializing, any routine anywhere in the
10411           code (including library) can use RNG without allocating a new
10412           RNG object.  This was done to allow this sort of use of the
10413           RNG in code that has no chance to allocate RNG object.  All
10414           applications currently allocate this and many routines in the
10415           library use this.  Affected file lib/silccrypt/silcrng.[ch].
10416
10417         * Removed the RNG kludge from lib/silcmath/primegen.c and changed
10418           it to use the Global RNG API.
10419
10420         * Defined Authentication Payload into protocol specification that
10421           is used during SILC session to authenticate entities.  It is
10422           used for example by client to authenticate itself to the server
10423           to obtain server operator privileges.
10424
10425           Implemented this payload into the lib/silccore/silcauth.[ch].
10426           Implemented also routines for public key based authentication
10427           as the new protocol specification dictates.
10428
10429           Moved definitions of different authentication methods from
10430           lib/silccore/silcprotocol.h into lib/silccore/silcauth.h.
10431
10432         * Added silc_pkcs_encrypt, silc_pkcs_decrypt, silc_pkcs_sign,
10433           silc_pkcs_verify and silc_pkcs_sign_with_hash and
10434           silc_pkcs_verify_with_hash functions into the file
10435           lib/silccrypt/silcpkcs.[ch].
10436
10437 Mon Feb 19 19:59:28 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10438
10439         * The client entry's userinfo pointer must be always valid.
10440           Otherwise the [<unknown>] bug will surface beacuse the WHOIS
10441           will fail since it requires the userinfo.  Now, the userinfo
10442           is allocated as "" if actual userinfo does not exist.  Actually,
10443           it must exist and it is totally Ok to drop client connections
10444           that does not announce the userinfo.  However, we will make
10445           this workaround for now.
10446
10447         * Added silc_net_get_remote_port into lib/silcutil/silcnet.[ch]
10448           to return the remote port by socket.
10449
10450 Mon Feb 19 14:26:49 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10451
10452         * Changed SILC_SERVER_COMMAND_EXEC_PENDING macro to the name
10453           SILC_SERVER_PENDING_EXEC and added an new macro
10454           SILC_SERVER_PENDING_DESTRUCTOR which is called to free the
10455           data or when error occurs while processing the pending command.
10456
10457           Added new argument `destructor' into silc_server_command_pending
10458           and to the SilcServerCommandPending object.  This destructor is
10459           now called after calling the pending callback or if error occurs
10460           immediately.  If error occurs the actual pending callback won't
10461           be called at all - only the destructor.  The destructor may be
10462           NULL if destructor is not needed.
10463
10464           All this applies for client library code as well.  Similar
10465           changes were made there as well for the pending commands.
10466
10467           In the client, the application must now allocate the
10468           SilcClientCommandContext with the silc_client_command_alloc
10469           function.
10470
10471         * Added reference counter to the SilcServerCommandContext.  Added
10472           function silc_server_command_alloc and silc_server_command_dup
10473           functions.
10474
10475           Same type of functions added to the client library for the same
10476           purpose as well.
10477
10478         * Removed the cmd_ident from IDListData away since it is now
10479           global for all connections.  It is the command identifier used
10480           in command sending and with pending commands.  The affected file
10481           is silcd/idlist.h.
10482
10483         * Added reference counter to the SilcSocketConnection objecet to
10484           indicate the usage count of the object.  The object won't be
10485           freed untill the reference counter hits zero.  Currently only
10486           server uses this, and client ignores it.  The client must be
10487           set to use this too later.  The affected files are
10488           lib/silccore/silcsockconn.[ch].  Added also the function
10489           silc_socket_dup to increase the reference counter.
10490
10491           This was mainly added because it is possible that the socket
10492           is removed underneath of pending command or other async
10493           operation.  Now it won't be free'd and proper DISCONNECTING
10494           flags, etc. can be set to avoid sending data to connection that
10495           is not valid anymore.
10496
10497         * Added SILC_SET_DISCONNECTING to server.c when EOF is read from
10498           the connection.  After that it sets SILC_SET_DISCONNECTED.
10499           It is, however, possible that the socket data is not still freed.
10500           The silc_server_packet_process now checks that data is not
10501           read or written to connection that is DISCONNECTED.  The socket
10502           get's freed when the reference counter hits zero.
10503
10504 Mon Feb 19 00:50:57 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10505
10506         * Changed the client operation API: channel_message operation's
10507           `sender' is now the client entry of the sender, not the nickname
10508           and the `channel' is the channel entry, not the channel name.
10509
10510           In the private_message operation the `sender' is now also the
10511           client entry of the sender not the nickname.
10512
10513           Affected file is lib/silcclient/ops.h and all applications
10514           using the client operations.
10515
10516 Sat Feb 17 22:11:50 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10517
10518         * Moved the calling of ops->connect() from connect_to_server_final
10519           into receive_new_id functin since that is the point when the
10520           client is actually allowed to send traffic to network.  The
10521           affected file is lib/silcclient/client.c.
10522
10523 Sat Feb 17 13:15:35 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10524
10525         * When receiving NEW_CHANNEL_LIST, NEW_CHANNEL_USER_LIST,
10526           NEW_ID_LIST and SET_MODE_LIST packets, broadcast the list packet
10527           (if needs broadcasting) instead of broadcasting the packets one
10528           by one which would make a burst in the network traffic.
10529
10530         * Added `broadcast' argument to the functions in silcd/server.[ch]
10531           silc_server_create_new_channel[_with_id] to indicate whether
10532           to send New Channel packet to primary router.
10533
10534 Sat Feb 17 01:06:44 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10535
10536         * Added new function into the silcd/server.[ch] files:
10537           silc_server_create_new_channel_with_id to create new channel with
10538           already existing Channel ID.
10539
10540         * Added new packet type SILC_PACKET_SET_MODE_LIST into the file
10541           lib/silccore/silcpacket.h.  This packet is used t send list of
10542           Set Mode payloads inside one packet.  Server uses this to set
10543           the modes for the channels and clients on those channels, that it
10544           announced to the router when it connected to it.  The protocol
10545           specification has been updated accordingly.
10546
10547         * The silc_server_new_channel did not handle the packet coming
10548           from normal server as it normally does not send that.  However,
10549           when it announces its channels it does send it.  Implemented
10550           the support for that.
10551
10552         * Added SILC_ID_CHANNEL_COMPARE macro to compare to Channel ID's
10553           into the file lib/silccore/id.h.
10554
10555 Fri Feb 16 23:57:29 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10556
10557         * Fixed memory leaks in the functions silc_idlist_del_client,
10558           silc_idlist_del_channel and silc_idlist_del_server in the file
10559           silcd/idlist.c.  All of those leaked like a sieve.
10560
10561         * Fixed some small memory leaks in the client's function
10562           silc_client_notify_by_server.
10563
10564         * Added functions into silcd/server.c: silc_server_announce_clients,
10565           silc_server_announce_channels and silc_server_announce_server.
10566           These functions are used by normal and router server to announce
10567           to its primary router about clients, channels and servers (when
10568           router) that we own.  This is done after we've connected to the
10569           router.
10570
10571           These functions effectively implements the following packet types:
10572           SILC_PACKET_NEW_CHANNEL_LIST, SILC_PACKET_NEW_CHANNEL_USER_LIST
10573           and SILC_PACKET_NEW_ID_LIST.
10574
10575         * Added new functions into the silcd/packet_receive.[ch]:
10576           silc_server_new_id_list, silc_server_new_channel_list and
10577           silc_server_new_channel_user_list to handle the incoming
10578           NEW_ID_LIST, NEW_CHANNEL_LIST and NEW_CHANNEL_USER_LIST packets.
10579
10580         * Added support of changing Channel ID in the function
10581           silc_server_replace_id.  If the server that announces a channel
10582           to the router already exists in the router (with same name but
10583           with different Channel ID), router is responsible to send
10584           Replace ID packet to the server and force the server to change
10585           the Channel ID to the one router has.
10586
10587         * Added new notify type SILC_NOTIFY_TYPE_CHANNEL_CHANGE to notify
10588           client that the Channel ID has been changed by the router.  The
10589           normal server sends this to the client.  Client must start using
10590           the new Channel ID as the channel's ID.
10591
10592           Implemented handling of this new type into lib/silcclient/client.c
10593           into the function silc_client_notify_by_server.
10594
10595         * Added new function silc_idlist_replace_channel_id into the files
10596           silcd/idlist.[ch] to replace the Channel ID.
10597
10598 Fri Feb 16 14:14:00 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10599
10600         * Call silc_server_command_identify_check always when processing
10601           the IDENTIFY command in silcd/command.c
10602
10603 Thu Feb 15 20:07:37 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10604
10605         * Added new packet type SILC_PACKET_HEARTBEAT that is used to
10606           send keepalive packets.  The packet can be sent by clients,
10607           servers and routers.
10608
10609           Added function silc_socket_set_heartbeat into the file
10610           lib/silccore/silcsockconn.[ch] to set the heartbeat timeout.
10611           If not set, the heartbeat is not performed.  The actual
10612           heartbeat is implemented in the low level socket connection
10613           library.  However, application is responsible of actually
10614           sending the packet.
10615
10616           Added silc_server_send_heartbeat to send the actual heartbeat
10617           packet into silcd/packet_send.[ch].  Server now performs
10618           keepalive with all connections.
10619
10620         * Added silc_task_get_first function into lib/silcutil/silctask.c
10621           to return the timeout task with shortest timeout.  There was a bug
10622           in task unregistration that caused problems.  TODO has been
10623           updated to include that task system must be rewritten.
10624
10625         * The client library will now resolve the client information when
10626           receiving JOIN notify from server for client that we know but
10627           have incomplete information.
10628
10629         * Rewrote parts of silc_server_remove_from_channels and
10630           silc_server_remove_from_one_channel as they did not remove the
10631           channel in some circumstances even though they should've.
10632
10633         * Encryption problem encountered in server:
10634
10635           The LEAVE command used to send the Channel Key packet to the
10636           router immediately after generating it.  However, the code
10637           had earlier sent Remove Channel user packet but not immediately,
10638           ie. it was put to queue.  The order of packets in the router
10639           was that Channel Key packet was first and Remove Channel User
10640           packet was second, even though they were encrypted in the
10641           reverse order.  For this reason, MAC check failed.  Now, this
10642           is fixed by not sending the Channel Key packet immediately but
10643           putting it to queue.  However, this is more fundamental problem:
10644           packets that are in queue should actually not be encrypted
10645           because packets that are sent immediately gets encrypted
10646           actually with wrong IV (and thus MAC check fails).  So, packets
10647           that are in queue should be encrypted when they are sent to
10648           the wire and not when they put to the queue.
10649
10650           However, the problem is that the current system has not been
10651           designed to work that way.  Instead, the packet is encrypted
10652           as soon as possible and left to the queue.  The queue is then
10653           just purged into wire.  There won't be any fixes for this
10654           any time soon.  So, the current semantic for packet sending
10655           is as follows:
10656
10657           o If you send packet to remote host and do not force the send
10658           (the packet will be in queue) then all subsequent packets to the
10659           same remote host must also be put to the queue.  Only after the
10660           queue has been purged is it safe again to force the packet
10661           send immediately.
10662
10663           o If you send all packets immediately then it safe to send
10664           any of subsequent packets through the queue, however, after
10665           the first packet is put to queue then any subsequent packets
10666           must also be put to the queue.
10667
10668           Follow these rules and everything works fine.
10669
10670 Thu Feb 15 14:24:32 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10671
10672         * Added new function silc_server_remove_clients_by_server to
10673           remove all client entries from ID list when the server connection
10674           is lost.  In this case it is also important to invalidate all
10675           client entires as they hold the invalid server entry.  This
10676           fixes fatal bug when server has lost connection and will reconnect
10677           again.
10678
10679 Wed Feb 14 16:03:25 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10680
10681         * Made some sanity checks to silc_server_daemonise like to check
10682           whether the requested user and group actually exists.
10683
10684         * Added sanity check to SKE's silc_ske_responder_finish to check
10685           that the public and private key actually is valid.
10686
10687         * Invalidate the client's nickname when receiving Replace ID
10688           packet and the Client ID is being replaced.  This means that the
10689           server will query the nickname if someone needs it (client)
10690           a bit later.
10691
10692         * Sort the ID Cache in client library when the ID Cache data
10693           has changed (needs sorting).
10694
10695         * Do not allow for SILC client to create several connections to
10696           several servers.  The client does not support windows right now
10697           and generating multiple connections causes weird behaviour.
10698
10699           Irssi-silc client does support windows and can handle several
10700           connections without problems, see: www.irssi.org and SILC plugin.
10701
10702         * Fixed some places where client was added to the IDList.  The
10703           rule of thumb is following (in order to get everything right):
10704           If the client is directly connected local client then the
10705           `connection' argument must be set and `router' argument must be
10706           NULL to silc_idlist_add_client function.  If the client is not
10707           directly connected client then the `router' argument must
10708           bet set and the `connection' argument must be NULL to the
10709           silc_idlist_add_client function.
10710
10711         * The funtion silc_server_packet_send_local_channel actually did
10712           not check whether the client was locally connected or not.  It
10713           does that now.  Fixed a bug related to LEAVE command.
10714
10715         * Fixed Remove Channel User payload parsing bug in server's
10716           silcd/packet_receive.c.  Fixed a bug related to LEAVE command.
10717
10718         * The server's silc_server_save_channel_key now checks also the
10719           global ID list for the channel as it might not be in the local
10720           list.  Fixed a bug related to LEAVE command.
10721
10722         * Is this the end of the [<unknown>] buglet that has been lurking
10723           around for a long time?  A little for loop fix in server's
10724           silc_server_command_whois_parse that is used by both IDENTIFY
10725           and WHOIS command.  At least, this was a clear bug and a cause
10726           of one type of [<unknown>] buglet.
10727
10728         * WHOIS and IDENTIFY commands call the function
10729           silc_server_command_[whois/identify]_check function even if
10730           we are not router server.
10731
10732 Tue Feb 13 19:55:59 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10733
10734         * Added --with-gmp configuration option.  If set the GMP
10735           is always compiled in the SILC source tree.  If not set then
10736           it is checked whether the system has the GMP3 installed.  If
10737           it has then the GMP won't be compiled (the system's headers
10738           and library is used), if it doesn't have it then the GMP is
10739           compiled in the SILC source tree.
10740
10741 Mon Feb 12 11:20:32 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10742
10743         * Changed RSA private exponent generation to what PKCS #1
10744           suggests.  We try to find the smallest possible d by doing
10745           modinv(e, lcm(phi)) instead of modinv(e, phi).  Note: this is
10746           not security fix but optimization.
10747
10748 Sun Feb 11 18:19:51 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10749
10750         * Added new config entry [Identity] to fork the server and run
10751           it as specific user and group.  A patch from Bostik.
10752
10753         * Imported Dotconf configuration library into lib/dotconf.
10754           This will be used to create the SILC configuration files later.
10755           It will appear in the distsribution after this commit.
10756
10757 Sat Feb 10 21:13:45 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10758
10759         * A big code auditing weekend happening.  Auditing code for
10760           obvious mistakes, bugs and errors.  Also, removing any code
10761           that is obsolete.
10762
10763           Removed files for being obsolete:
10764
10765           o lib/silcutil/silcbuffer.c (the buffer interface is entirely in
10766           inline in the file lib/silcutil/silcbuffer.h)
10767
10768           o lib/silcutil/silcbufutil.c (the header has inline versions)
10769
10770           Changed code to fix possible error conditions:
10771
10772           o The buffer formatting routines now check that the destination
10773           buffer really has enough space to add the data.  This applies for
10774           both buffer formatting and unformatting
10775           (lib/silcutil/silcbuffmt.[ch]).  Also, the entire buffer
10776           unformatting was changed to accomodate following rules:
10777           XXX_*STRING_ALLOC will allocate space for the data into the pointer
10778           sent to the function while XXX_*STRING will not allocate or copy
10779           the data into the buffer.  Instead it sets the pointer from the
10780           buffer into the pointer sent as argument (XXX_*STRING used to
10781           require that the pointer must be allocated already).  This change
10782           makes this whole thing a bit more consistent and more optimized
10783           (note that the data returned in the unformatting with XXX_*STRING
10784           must not be freed now).  The routines return now -1 on error.
10785
10786           o Tried to find all code that use buffer_format and buffer_unformat
10787           and added return value checking to prevent formatting and
10788           especially unformatting errors and possible subsequent fatal
10789           errors.
10790
10791           o Changed ske->x and ske->KEY to mallocated pointers in
10792           lib/silcske/silcske.h.  Fixed possible data and memory leak.
10793
10794           o Added return value checking to all *_parse* functions.  Fixed
10795           many memory leaks as well.
10796
10797           o Added length argument to silc_id_str2id in lib/silccore/id.[ch]
10798           so that buffer overflows would not happen.  All code now also
10799           checks the return value as it can fail.
10800
10801 Mon Feb  5 20:08:30 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10802
10803         * Added reconnection support to server if the normal server looses
10804           its connection to the router (for example if router is rebooted).
10805           The server performs normal reconnection strategy implemented
10806           to the server.  Affected file silcd/server.c.
10807
10808 Sun Feb  4 13:18:32 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10809
10810         * Added new packet type SILC_PACKET_SET_MODE that is used to
10811           distribute the information about changed modes (for clients,
10812           channels and clients channel modes) to all routers in the
10813           network.  Updated the protocol specification accordingly.
10814
10815           Added functions into silcd/packet_send.c and
10816           silcd/packet_receive.c: silc_server_send_set_mode,
10817           silc_server_set_mode.
10818
10819           Added new files silcmode.[ch] into lib/silccore that implements
10820           the encoding and decoding of Set Mode Payload.  Added new type
10821           SilcSetModePayload.  Moved the definitions of different modes
10822           from lib/silccore/silcchannel.h into lib/silccore/silcmode.h.
10823
10824 Sat Feb  3 15:44:54 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10825
10826         * Oops, a little mistake in server's connection authentication
10827           protocol.  The protocol is not ended with FAILURE but with
10828           SUCCESS if the authentication is Ok. :)  Affected file is
10829           silcd/protocol.c.
10830
10831         * Implemented NICK_CHANGE notify handling in server in the file
10832           silcd/packet_receive.c  The NICK_CHANGE notify is distributed to
10833           the local clients on the channel.  After the changing nickname
10834           in router environment snhould work and the [<unknown>] nickname
10835           should appear no more.
10836
10837           The silc_server_replace_id function that receives the Replace ID
10838           payload now sends the NICK_CHANGE notify type also in the file
10839           silcd/packet_receive.c
10840
10841         * Changed WHOIS and IDENTIFY command to support the maximum amount
10842           of arguments defined in protocol specs (3328 arguments).  This
10843           fixed a bug that caused problems when there were more than three
10844           users on a channel.
10845
10846 Fri Feb  2 11:42:56 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10847
10848         * Added extra parameter, command identifier, to the
10849           silc_client_send_command so that explicit command identifier
10850           can be defined.
10851
10852           Changed that ID list routines uses specific command identifier
10853           when sending WHOIS/IDENTIFY requests to the server so that they
10854           can be identified when the reply comes back.
10855
10856           Affected files lib/silcclient/command.[ch],
10857           lib/silcclient/client.c and lib/silcclient/idlist.[ch].
10858
10859         * Added `sender' argument to silc_server_packet_send_to_channel
10860           to indicaet the sender who originally sent the packet to us
10861           that we are now re-sending.  Ignored if NULL.  Affected file
10862           silcd/packet_send.[ch].
10863
10864         * Added some server statistics support in silcd/server_internal.h
10865           SilcServerStatistics structure and around the server code.  Also
10866           send some nice statistics information when client is connecting
10867           to the client.
10868
10869 Thu Feb  1 23:31:21 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10870
10871         * Fixed channel ID decoding in server's JOIN command reply in
10872           silcd/command_reply.c
10873
10874         * Fixed braodcasting of replace ID payload to not to send it if
10875           we are standalone server in silcd/packet_receive.c.
10876
10877         * Fixed all channel message sending routines to not to send
10878           packets to clients that has router set, since they are routed
10879           separately in the same function earlier.  Affects file
10880           silcd/packet_send.c and all channel packet sending functions.
10881
10882         * In USERS reply, res_argv[i] are not allocated, the table
10883           is allocated.  Thus changed that free the table, not its
10884           internals.
10885
10886         * In server's whois_check and identify_check if the client is
10887           locally connected do not send any WHOIS commands - they are not
10888           needed.
10889
10890 Thu Feb  1 21:32:27 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10891
10892         * Fixed some minor bugs in client when sending WHOIS command.  The
10893           arguments was in wrong order.
10894
10895         * Removed statis function add_to_channel from server in
10896           silcd/command.c that was previously used with the joining but
10897           is obsolete now.
10898
10899         * Tested USERS command in router environment successfully with two
10900           routers, two servers and two clients.
10901
10902 Thu Feb  1 00:54:26 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10903
10904         * Reorganized the USERS command and command reply in client library
10905           in lib/silcclient/command.c and lib/silcclient/command_reply.c.
10906           When the command is given by user we register a pending command
10907           callback that will reprocess the command after the reply has been
10908           received from the server.  When reprocessing the packet we then
10909           display the information.  Thus, the USERS information is displayed
10910           now in the command callback instead of in the command reply
10911           callback.  The processing of the command is same as previously
10912           when server has sent the command reply in the JOINing process.
10913
10914         * Added to USERS command in silcd/command_reply.c to join the client,
10915           we didn't use to know about, to the channel after we've created
10916           a client entry for it.  Also, for clienet we did know already still
10917           check whether it is on the channel or not and add it if not.
10918
10919         * Removed silc_server_command_join_notify as the function and its
10920           use was obsolete.
10921
10922 Tue Jan 30 22:39:15 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10923
10924         * Changed the client's pending command handling to the same as the
10925           server's pending command handling.  It is also now possible to
10926           execute command reply functions from other command reply
10927           function as the function callbacks for commands and command
10928           replies are one and same.  The pending commands are not static
10929           list anymore, it is mallocated SilcDList in lib/silcclient/client.h
10930           in client connection context.  Thus, pending commands are server
10931           connection specific as it is convenient.
10932
10933           Changed the function silc_client_command_pending and
10934           silc_client_command_pending_del and added new function
10935           silc_client_command_pending_check.  Removed the
10936           SILC_CLIENT_CMD_REPLY_EXEC, and SILC_CLIENT_PENDING_COMMAND_CHECK
10937           macros.
10938
10939         * Added cmd_ident, current command identifier, to the client
10940           connection context in lib/silcclient/client.h to keep track on
10941           command identifiers used in command sending.  Client's command reply
10942           function handling now supports the mandatory command identifiers.
10943
10944         * Added SILC_CLIENT_COMMAND_EXEC_PENDING macros to all command reply
10945           funtions in client to fully support pending command callbacks.
10946
10947         * NOTE: the name_list in USERS (old NAMES) command is NOT sent anymore
10948           as one of the arguments to the application in the command reply
10949           client operation.
10950
10951         * NOTE: The FORWARDED flag is depracated.  It used to be depracated
10952           before first releasing SILC but came back.  Now it is removed again
10953           and should come back nomore.  The FORWARDED flag was used only
10954           by the JOINing procedure by forwarding the command packet to router.
10955           Now, the JOINing procedure has been changed to more generic (due
10956           to various router environment issues) and FORWARDED is not needed
10957           anymore for anything.  The protocol specification is yet to be
10958           updated.
10959
10960           Now, removed silc_server_packet_forward from server and the flag
10961           SILC_PACKET_FORWARDED from lib/silccore/silcpacket.h.
10962
10963 Tue Jan 30 00:05:05 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10964
10965         * Renamed NAMES command to USERS command.  The NAMES was named that
10966           due to historical reasons.  Now it is renamed.  Also, rewrote
10967           parts of the USERS command.  The nickname list is not sent anymore
10968           by the server.  Only Client ID and mode lists are sent in the USERS
10969           command.  Changed this also to the protocol specification.
10970
10971           The client now resolves the names and stuff after it receives
10972           the USERS list from the server when joining to the channel.
10973
10974         * WHOIS and IDENTIFY commands has been changed to support multiple
10975           Client ID's per command.  One can now search for multiple users
10976           in the network by sending only one WHOIS or IDENTIFY command.
10977           Changed the code and the protocol specifications.
10978
10979         * Removed silc_server_command_identify_parse and changed that IDENTIFY
10980           uses silc_server_command_whois_parse to parse the request. */
10981
10982         * If normal server, do not parse the WHOIS and IDENTIFY requests
10983           before sending it to the router.  Saves some time.
10984
10985 Sun Jan 28 16:19:49 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10986
10987         * Fixed JOIN command on client library.  Wrong number of arguments
10988           used to crash the client.
10989
10990         * Added silc_server_channel_has_global function to check whether
10991           channel has global users or not.
10992
10993         * Added silc_server_channel_has_local function to check whether channel
10994           has locally connected clients on the channel.
10995
10996         * The silc_server_remove_from_one_channel now checks whether the
10997           channel has global users or not after given client was removed from
10998           the channel.  It also checks whether the channel has local clients
10999           on the channel anymore.  If it does not have then the channel entry
11000           is removed as it is not needed anymore.
11001
11002         * The silc_server_notify now checks on JOIN notify whether the joining
11003           client is one of locally connected or global.  If it is global then
11004           the channel has now global users on the channel and that is marked
11005           to the channel entry.  Also, it now saves the global client to
11006           global list who is joining and JOINs it to the channel.  This is
11007           for normal server, that is.
11008
11009           Changed silc_server_send_notify_on_channel,
11010           silc_server_packet_relay_to_channel and
11011           silc_server_packet_send_to_channel check if we are normal server
11012           and client has router set (ie. global client) do not send the
11013           message to that client, as it is already routed to our router.
11014
11015         * Implemented LEAVE notify type handling in silc_server_notify
11016           function.
11017
11018         * Tested LEAVE command in router environment successfully.  Tested
11019           with two routers, two servers and two clients.
11020
11021         * Updated TODO.
11022
11023         * idlist_find_xxx_by_id routines now dumps the ID on the debug mode.
11024
11025         * Implemented SIGNOFF notify type handling in silc_server_notify
11026           function.
11027
11028         * silc_server_remove_id now removes the client entry from all channels
11029           it has joined and thusly sends SIGNOFF notify type.
11030
11031         * Rewrote the NAMES list generation in server by removing two excess
11032           loops.  The lists are created now inside one loop.
11033
11034 Sat Jan 27 22:34:56 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
11035
11036         * silc_server_remove_channel_user checks now also global list
11037           for channel and client.
11038
11039         * silc_server_new_channel_user checks now both local and global
11040           list for channel and client.  Fixed a bug in client id decoding.
11041           Used to decode wrong buffer.
11042
11043         * silc_server_channel_message checks now both local and global
11044           list for channel entry.
11045
11046         * Tested channel joining (hence JOIN) in router environment
11047           successfully.  Tested with two routers, two servers and two
11048           clients.
11049
11050         * Tested channel message sending in router environment successfully.
11051
11052 Thu Jan 11 03:22:57 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
11053
11054         * Added silc_server_save_channel_key into server.[ch] to save the
11055           received channel key in Channel Key payload processing. It is
11056           also used in JOIN command reply handling.
11057
11058           Equivalent function silc_client_save_channel_key added into
11059           client.[ch] into client library.
11060
11061         * Changed JOIN command reply to send information whether the channel
11062           was created or not (is existing already) and the channel key
11063           payload.  Changed protocol specs accordingly.
11064
11065         * Fixed bugs in WHOIS and IDENTIFY command reply sending when
11066           the request was sent by ID and not by nickname.  Crashed on
11067           NULL dereference.
11068
11069 Sat Dec 23 21:55:07 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11070
11071         * Fixed a bug in Client library.  IDENTIFY and WHOIS reply functions
11072           now correctly save the received data.
11073
11074         * silc_server_free_sock_user_data now notifies routers in the
11075           network about entities leaving the network.
11076
11077           At the same time implemented functions silc_server_remove_id
11078           and silc_server_send_remove_id to receive and send REMOVE_ID
11079           packets.  The packet is used to notify routers in the network
11080           about leaving entities.  The ID removed will become invalid in
11081           the network.
11082
11083         * Added function silc_idlist_del_server into server. Removes and
11084           free's server entry from ID list.
11085
11086         * silc_server_private_message function now checks, if we are router,
11087           that the destination ID really is valid ID, naturally.
11088
11089         * In router when NEW_ID packet is received (for new client) the
11090           hash of the Client ID is saved in the ID Cache but the
11091           client->nickname is set to NULL, instead of putting the hash
11092           to it as well.
11093
11094           IDENTIFY command now also checks that client->nickname must be
11095           valid. If it is not if will request the data from the server who
11096           owns the client.  Added new function
11097           silc_server_command_identify_check.
11098
11099         * Added silc_command_set_command into lib/silccore/silcommand.[ch]
11100           to set the command to already allocated Command Payload.
11101
11102         * Tested private message sending in router environment with two
11103           routers, two servers and two clients.  Fixed minor bugs and now
11104           it works fine.
11105
11106         * Fixed segfault from client's NAMES command. Used to crash if
11107           not on any channel.
11108
11109         * Forwarded packets must not be routed even if it is not destined
11110           to the receiver.  Changed server code comply with this.
11111
11112 Sun Dec 17 14:40:08 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11113
11114         * Added `require_reverse_mapping' boolean value to ServerParams
11115           structure. If TRUE (not default) the server will require that
11116           the connecting host has fully qualified domain name.
11117
11118           If the reverse mapping is not required and hostname could not be
11119           found the IP address is used as hostname.
11120
11121 Sat Dec 16 17:39:54 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11122
11123         * Implemented version string checking to both client and server.
11124           The check is incomplete currently due to the abnormal version
11125           strings used in development version of SILC.
11126
11127         * Changed all command functions in server to use the new
11128           CHECK_ARGS macro.
11129
11130 Fri Dec 15 15:55:12 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11131
11132         * Changed char *data to unsigned char *data in ID Cache system to
11133           support binary data as ID Cache data. Changed code to support
11134           binary data in lib/silccore/idcache.c.
11135
11136         * Renamed silc_server_packet_relay_command_reply to
11137           silc_server_command_reply as it is normal packet receiving
11138           function. Rewrote the function to accept command replys for
11139           servers and not only for clients.
11140
11141         * Mark remote router always as registered server if we are connecting
11142           to it.  Otherwise, commands sent by the router to us are ignored.
11143
11144         * All ID List find routines now returns the ID Cache Entry pointer
11145           as well if requested.
11146
11147         * WHOIS command works now in router environment, tested with two
11148           routers, two servers and two clients.
11149
11150         * Cleaned up and rewrote IDENTIFY command. IDENTIFY should work now
11151           in router environment (as it is almost equivalent to WHOIS) but
11152           hasn't been tested thoroughly.  Added new functions:
11153
11154           silc_server_command_identify_parse
11155           silc_server_command_identify_send_reply
11156           silc_server_command_identify_from_client
11157           silc_server_command_identify_from_server
11158
11159         * Disabled route cache adding because adding two different ID's with
11160           same IP replaces the old cache entry thus giving wrong route.
11161           The entry->router->connection is always the fastest route anyway
11162           so route cache may not be needed.  Of course, new routes maybe
11163           established after receiving the ID when the entry->router->connection
11164           might not be anymore the most optimal.
11165
11166 Thu Dec 14 15:55:35 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11167
11168         * Add route cache for received ID for fast routing.
11169
11170         * Added silc_server_packet_route to route received packet on router
11171           that is not destined to us.
11172
11173         * Renamed silc_server_get_route to silc_server_route_get.
11174
11175         * Added id_string and id_string_len fields into SilcServer to
11176           include encoded ServerID for fast comparing without excess
11177           encoding of the ID's.
11178
11179         * Cleaned up WHOIS command on server side. Added following static
11180           functions:
11181
11182           silc_server_command_whois_parse
11183           silc_server_command_whois_check
11184           silc_server_command_whois_send_reply
11185           silc_server_command_whois_from_client
11186           silc_server_command_whois_from_server
11187
11188         * Added macro SILC_SERVER_COMMAND_CHECK_ARGC to check mandatory
11189           arguments in command replies. All command functions should be
11190           updated to use this macro.
11191
11192 Sun Dec 10 23:52:00 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11193
11194         * Minor typo fixes on command reply handling on server.
11195
11196 Tue Nov 28 11:05:39 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11197
11198         * Added silc_server_command_add_to_channel internal routine to add
11199           the client to the channel after router has created the channel and
11200           sent command reply to the server.
11201
11202         * Added generic silc_server_send_command to send any command from
11203           server.
11204
11205         * Use static buffer with ID rendering instead of duplicating data.
11206
11207 Mon Nov 27 21:39:40 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11208
11209         * Fixed a channel user mode bug when joining to a channel server gave
11210           everybody channel founder rights, oops.
11211
11212         * We mark ourselves as the router of the incoming server connection
11213           if we are router ourselves.  This way we can check in some packet
11214           sending functions whether it is locally connected server.  For
11215           incoming router connections we put NULL.
11216
11217         * For router sending packets locally means now always sending the
11218           packet cell wide; to local clients and local servers.  For normal
11219           server sending packet locally means sending it to only local
11220           clients.
11221
11222         * Fixed the JOIN command to really work in router environment.  If the
11223           channel is created it is always created by the router.  Router is
11224           also responsible of making the initial joining to the channel,
11225           sending JOIN notify to the sending server and distributing
11226           NEW_CHANNEL and NEW_CHANNEL_USER packets.  Hence, if the channel
11227           does not exist server doesn't do anything else but forward the
11228           command to the router which performs everything.
11229
11230         * Added silc_server_send_channel_key function to send the Channel Key
11231           payload.
11232
11233         * Added silc_server_create_channel_key to create new channel key.  The
11234           channel key is now re-generated everytime someone joins or leaves
11235           a channel, as protocol dictates.  Note: channel->key_len is the
11236           key length in bits.
11237
11238 Wed Nov 22 22:14:19 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11239
11240         * Splitted server.[ch] finally.  Created now packet_send.[ch] and
11241           packet_receive.[ch] to separate packet sending and receiving
11242           routines.  The server.[ch] now includes everything else including
11243           actual packet processing (writing and reading data) and other
11244           server issues.
11245
11246           Renamed silc_server_private_message_send_internal to
11247           silc_server_send_private_message.  The routine is still though
11248           used only to relay private messages as server does not send
11249           private messages itself.
11250
11251           Renamed silc_server_new_channel to silc_server_create_new_channel
11252           and added new function sicl_server_new_channel that handles the
11253           incoming New Channel packet.  Added also new sending function
11254           silc_server_send_new_channel to send New Channel Payload.
11255
11256         * Added new function silc_server_notify to process incoming notify
11257           packet to the server/router. Server may then relay the notify
11258           to clients if needed.
11259
11260         * Added new function silc_server_new_channel_user to process incoming
11261           New Channel User packet.  Router will redistribute the packet and
11262           send JOIN notify to its local clients and locally connected servers
11263           if needed.  Normal server will send JOIN notify to its local client
11264           on same channel when received this packet.  Added also corresponding
11265           sending function silc_server_send_new_channel_user to sent the
11266           payload.
11267
11268         * Added boolean route argument to send_notif_to_channel and
11269           packet_send_to_channel functions to attempt to route the packet
11270           if it is TRUE and send only locally if it is FALSE.
11271
11272 Tue Nov 21 19:49:31 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11273
11274         * silc_server_replace_id now broadcasts the received replace ID
11275           packet if it is not broadcast packet already. The router must
11276           broadcast to inform other routers about changed ID.
11277
11278         * Added backpointer to server's router into SilcServer context in
11279           silcd/server_internal.h.
11280
11281         * Fixed silc_server_packet_broadcast to send correct broadcast
11282           packets.
11283
11284         * The channel key is now distributed to the local client as soon
11285           as it is received from the router (in router environment) so that
11286           no other packet may be sent for the channel until client has
11287           received the key.
11288
11289         * silc_server_remove_channel_user now broadcasts the received
11290           Remove Channel User packet if it is not broadcast packet already.
11291           The router must broadcast to inform other routers about removed
11292           channel user.
11293
11294         * Added users field into SilcPacketContext that is a reference count
11295           of the context.  One can increase the reference count by calling
11296           silc_packet_context_dup which is now changed to just increase the
11297           reference count instead of duplicating the data.  The reference
11298           count is decresed by calling silc_packet_context_free that will
11299           free the data after the reference count hits zero.
11300
11301           For now on the packet context and everything allocated into it
11302           (including the raw packet from network) must be freed by calling
11303           the new silc_packet_context_free function.  Added also new function
11304           silc_packet_context_alloc that must be used now to allocate the
11305           context.  This also means that if a routine is asynchronous from
11306           silc_[client/server]_packet_parse_type the packet context must
11307           be duplicated by calling silc_packet_context_dup.  Otherwise it
11308           gets free'd after silc_[client/server]_packet_parse_type returns.
11309           Also, one must remember that if packet is duplicated then its
11310           reference count must be decresed by calling the free function as
11311           many times as it was duplicated.
11312
11313         * Changed SilcBuffer field from protocol contexts to SilcPacketContext
11314           from both client and server.
11315
11316 Mon Nov 20 23:47:03 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11317
11318         * Made joining to a channel working in router environment.
11319
11320         * Cleaned up JOIN command on server side and create function
11321           silc_server_command_join_channel internal routine to make the
11322           joining happen.
11323
11324 Thu Nov  9 21:12:39 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11325
11326         * Changed silc_command_pending list to SilcDList.  Also, added
11327           `ident' field to SilcServerCommandPending structure to identify
11328           the reply and to call correct callback.
11329
11330           Added silc_server_command_pending_check function to replace the
11331           corresnponding macro.  The silc_command_pending list is not
11332           extern anymore.
11333
11334         * Added silc_command_set_ident into lib/silccore/silccommand.[ch]
11335           to set identifier to previously allocated Command Payload.  It
11336           is used to set identifier for command when resending Command
11337           Payload.
11338
11339         * Added silc_command_payload_encode_payload to encode Command
11340           Payload buffer from SilcCommandPayload structure.
11341
11342         * Added silc_argument_payload_encode_payload to encode Argument
11343           payload buffer from SilcArgumentPayload structure.
11344
11345 Wed Nov  8 21:03:28 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11346
11347         * Changed WHOIS command to support router connection on server side.
11348           The whois request is always sent to router unless the server is
11349           standalone server.  After server has received the reply from the
11350           router will it send the reply to the client.
11351
11352         * Added silc_server_packet_broadcast into silcd/server.[ch] to
11353           broadcast received broadcast packet.  The function is used only
11354           by router.  The broadcast packet is always sent to the router's
11355           primary route.
11356
11357         * Added silc_id_render function in lib/silcutil/silcutil.[ch] to
11358           render given ID to printable string, for log files for example.
11359
11360 Tue Nov  7 22:14:19 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11361
11362         * Made basic router to router connections working.  At least they
11363           can now connect to each other but nothing really works the way
11364           they are supposed - yet.
11365
11366         * Added new initiator token to RouterConnection configuration
11367           file in silcd/serverconfig.[ch].  It is used to tell whether we
11368           are the initiator to the remote router or whether we'll expect
11369           the other end to connect.
11370
11371         * Moved registering of listener task to silc_server_init, hence
11372           the server starts listenning as soon as it is run, even if it
11373           does not have connections to other routers.  Let's see how well
11374           this will work.
11375
11376         * Changed default connection retry timeouts for more suitable in
11377           silcd/server.h.
11378
11379         * Removed cipher and such arguments from silc_idlist_add_client
11380           and silc_idlist_add_server prototypes from silcd/idlist.[ch].
11381           Added new function silc_idlist_add_data to add the keys and stuff
11382           to any ID entry.
11383
11384         * Added SilcIDListData structure and added it to SilcClientEntry
11385           and SilcServerEntry as their first field in the structure.  This
11386           way we can explicitly cast the ID entries to the SilcIDListData
11387           structure and get common data for the entries.  In past, we had
11388           to first check what type of connection it is and then cast it to
11389           correct ID entry type.  Now, we can directly cast the opaque
11390           pointer to the SilcIDListData (no matter what ID entry it actually
11391           is) and get the data needed.
11392
11393 Mon Nov  6 21:56:12 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11394
11395         * Wow, found a bug in scheduler.  The scheduler uninitialized itself
11396           in some circumstances even if threre were timeout tasks, though not
11397           IO tasks, but tasks anyway.  Now fixed.
11398
11399         * Defined SilcServerConnection structure to hold connection specific
11400           stuff about directly connected servers and routers.  The definition
11401           is currently in silcd/server_internal.h.  I thought about having
11402           a bit more important role fro this struct but for now it is used
11403           only when connecting to other server (or router actually).
11404
11405         * Added connecting retry support in server when connecting to
11406           router(s).  The retry feature implement exponential backoff
11407           algorithm.  Also, added SilcServerParams structure to hold default
11408           parameters for server.  For now, it include these retry settings
11409           and are hard coded.  After server is moded to be as Silc Server
11410           Library this structure will be more important.
11411
11412 Sun Nov  5 22:28:44 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11413
11414         * Changed client librarys channel->clients table to SilcList and
11415           changed code accordingly.
11416
11417 Thu Nov  2 16:28:01 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11418
11419         * Changed client's channel table to SilcList and changed code
11420           accordingly.  Also changed SilcChannelClientEntry to include back-
11421           pointer to the channel so that client entry can use that structure
11422           as list as well and we have fast cross-reference to the channel.
11423           This change dramatically decreased the complexity of channel
11424           handling with client entry and vice versa (removed one extra
11425           loop when searching for channel entry from many functions).
11426
11427         * Changed server->sim from table to SilcDList and changed code
11428           accordingly.
11429
11430         * NAMES command can now be used from user interface.  It will show
11431           the user list on the channel, neatly.
11432
11433         * Added realname pointer to SilcClientEntry in lib/silcclient/idlist.h.
11434           Code now saves realname of the user if it becomes available.
11435
11436         * Renamed configure.in to configure.in.pre and made ./prepare
11437           script to automatically add correct version string to
11438           configure.in which it creates from configure.in.pre.
11439
11440 Wed Nov  1 17:21:26 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11441
11442         * NAMES command reply now shows users mode with the nickname when
11443           joining to channel.
11444
11445         * Moved silc_client_ch[u]mode[_char] functions from
11446           silc/clientutil.[ch] to lib/silcclient/client.[ch].  Though, that
11447           place sucks, they are utility functions and should be in some
11448           other file.
11449
11450         * Fixed some unsigned int's to unsigned short's.  Patch by cras.
11451
11452         * Fixed contrib/getopt*.[ch] to not require config.h.  Patch by
11453           cras.
11454
11455 Tue Oct 31 20:10:37 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11456
11457         * Updated README.
11458
11459         * Added TRQ (efficient deque and list library) into lib/trq.  This is
11460           a very good list library that is currently used in the SILC.  Defined
11461           SilcList API over the library because I didn't like the API very
11462           much.  See lib/trq/silclist.h for the API and examples of how to
11463           use the API.  Fixed various places in the code to use the new
11464           SilcList API. The SilcList is meant for lists that has a structure
11465           already defined as a list.  It is not suitable to add just some
11466           context to the list (in TRQ, the context is the list actually).
11467
11468           So, I defined SilcDList that can be used for the purpose where
11469           predefined list structure does not exit.  This can be used as
11470           such list.  Now some context just can be added to the SilcDList.
11471           Currently this list is not used in the SILC just yet, though there
11472           are a lot places where this can replace dynamically allocated
11473           tables and I will fix these places, later, to use SilcDList.
11474           See lib/trq/silcdlist.h for SilcDList (they are all inline functions,
11475           and use TRQ internally).
11476
11477           Also fixed some annoying warning messages that the original TRQ
11478           code generated.  Also minor changes to TRQ's Makefile.in.
11479
11480         * Added support for querying by Client ID to both WHOIS and
11481           IDENTIFY commands into server, as required by the protocol.
11482
11483         * Removed method function pointers from SilcBuffer structure. They
11484           weren't used to anything and just increased the context size for
11485           no good reason.  This change also made silc_buffer_alloc and
11486           silc_buffer_free functions inline functions.
11487
11488         * Disabled command flooding detection support until it's fixed so
11489           that it accepts commands in but does not execute them more than once
11490           in two seconds.
11491
11492         * Added silc_net_localhost(), to return local hostname, into
11493           lib/silcutil/silcnet.[ch].  Also added client->hostname pointer
11494           that must be initialized before calling silc_client_init.
11495
11496         * Added new function: silc_server_send_notify_on_channels to send
11497           notify messages to all channels client has joined.  It is assured
11498           that the message is sent only once per client.
11499
11500         * Moved silc_log_format (from lib/silcutil/silclog.[ch] into
11501           lib/silcutil/silcutil.[ch] as silc_format function.  The new
11502           function is generic and is used by server as well, not only by
11503           the logging routines.
11504
11505         * Added new SKE status type: SILC_SKE_STATUS_BAD_VERSION to indicate
11506           the provided version string was not acceptable.  Added new function:
11507           silc_ske_check_version into lib/silcske/silcske.h.  The function
11508           must be implemented by the application (client or server) and it
11509           does not reside in the SKE library.  The function checks the version
11510           string remote end sent.
11511
11512         * Added back pointers (to opaque context and to SilcSocketConnection)
11513           into SilcPacketContext structure into lib/silccore/silcpacket.h.
11514
11515         * Added silc_packet_context_dup into lib/silccore/silcpacket.[ch] to
11516           duplicate packet context structure.
11517
11518         * Changed `notify' client operation to send same arguments as client
11519           receives from server except for ID's.  ID's are mapped to correct
11520           ID entry and that is returned.  Also, if channel entry is not sent
11521           by server but the notify is for channel the channel entry is sent
11522           to application (otherwise application doesn't know that it is for
11523           channel (library gets it from packet's Destination ID)).
11524
11525         * Added silc_client_remove_from_channels into client library to
11526           remove a client from all channels it has joined to.  Used when
11527           received SIGNOFF notify from server.  Added also new function
11528           silc_client_replace_from_channels to replace old ID entry with
11529           new ID entry on all channels.  Used when received NICK_CHANGE
11530           notify from server.
11531
11532         * Fixed ID Cache list handling in silc_idlist_get_client in
11533           lib/silcclient/idlist.c.  Also, added silc_idlist_get_client_by_id
11534           to get (or query) client by ID.
11535
11536         * Updated TODO list.
11537
11538         * Added connection authentication status message defined by the
11539           protocol: SILC_CONN_AUTH_OK and SILC_CONN_AUTH_FAILED and added the
11540           support for these into the code in client and server side.
11541
11542         * Added generic function silc_client_send_command to send any command
11543           with variable argument list.  Application should use this function
11544           to send commands if the command functions provided by the library
11545           does not suite for the application's user interface needs.
11546
11547         * Added new `failure' client operation.  Application is notified about
11548           received failure packet if client is executing a protocol.  In this
11549           case the protocol's execution has failed.
11550
11551         * Added SKE's end notify to send the SKE_SUCCESS notify message that
11552           is required by the protocol.
11553
11554         * Added SILC_PROTOCOL_STATE_FAILURE to indicate received failure
11555           packet from remote.  SILC_PROTOCOL_STATE_ERROR indicates local
11556           error at our end.
11557
11558         * Added status flag to SilcSKE object to indicate realtime status
11559           of the SKE protocol.
11560
11561         * Application receives now exactly same command reply arguments as
11562           the library receives from server.  However, if ID is received the
11563           corresponding ID entry is returned to the application (eg. Client
11564           ID is mapped to correct SilcClientEntry entry and that is returned).
11565           Changed command_reply client operation due to this change.
11566
11567         * Changed all ID's in commands and in command replys as ID Payloads.
11568           Change affected both client and server side codes.
11569
11570           All ID's sent in SILC network (with execption of ID's in SILC
11571           Packet header) are sent in ID Payload to support variable length
11572           ID's.
11573
11574         * Server now notifies nick changes and notifies all clients on
11575           the channels about the new nickname (about the new Client ID,
11576           actually).
11577
11578         * Implemented CMODE command to change channel modes. Supports all
11579           channel modes defined by the protocol specs except ban and invite
11580           lists. (Also, private channel key mode is supported but support for
11581           setting private channel key in client is missing, thus, this mode
11582           has no effect on client side (except that server requires that the
11583           client uses private channel key and normal channel traffic does not
11584           work anymore)).
11585
11586           Also, invite mode works per se, but INVITE command does not work
11587           yet correctly, so you can set channel as invite only channel but
11588           inviting clients to the channel does not work (it is yet to be
11589           thought what's the best way to do it).
11590
11591         * Added new command SILC_COMMAND_CUMODE to change user mode on the
11592           channel.  Defined user modes: CHANNEL_FOUNDER and CHANNEL_OPERATOR.
11593           Implemented CUMODE command to change user's mode on the channel.
11594           Supports all modes defined by the protocol specs.
11595
11596         * Added NAMES command reply to return users modes on the channel.
11597
11598         * Removed unnecessary and slow ciphers from lib/silccrypt.
11599
11600         * Set SO_KEEPALIVE option to connection sockets by default.
11601
11602         * Added new command reply status: SILC_STATUS_USER_NOT_ON_CHANNEL.
11603
11604         * Added notify types: MOTD, CMODE_CHANGE and CUMODE_CHANGE.  Also,
11605           redefined the Notify Payload into protocol specs.
11606
11607         * Added silc_id_payload_parse_id to get ID directly from raw
11608           ID payload data.
11609
11610 Mon Oct  9 20:57:02 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11611
11612         * Changed SILC_COMMAND_IDENTIFY in protocol specification to
11613           accept searching by Client ID as well.
11614
11615         * Added support for LEAVE and SIGNOFF notify types in client library.
11616
11617         * Added silc_id_payload_parse_data into lib/silccore/silcpayload.[ch]
11618           to parse ID Payload from raw data.
11619
11620 Sun Oct  8 19:33:08 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11621
11622         * Added flags parameter into silc_ske_assemble_security_properties
11623           function in lib/silcske/silcske.[ch].
11624
11625         * Changed notify client operation to fit better for notify messages
11626           sent by server.  The notify payload received from server is now
11627           passed to the application (after parsing it to SilcNotifyPayload).
11628           It is application's responsibility to retrieve the arguments
11629           from the payload and show the message the way it wants.  The message
11630           sent by server is implementation specific.
11631
11632         * Changed public keys to comply with the protocol specification.
11633           Old public keys are not supported anymore and are not compatible.
11634
11635         * Removed nickname from Channel Payload as the latest draft removed
11636           it.  The client must resolve the nickname from the NAMES command
11637           reply received when it joined the channel.
11638
11639           Also, changed all channel_xxxx_payload to channel_payload_xxxx.
11640
11641 Sat Oct  7 21:55:01 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11642
11643         * Fixed some errors in protocol specification drafts.
11644
11645         * Created lib/silccore/silcnotify.c to implement Notify Payload
11646           encoding and decoding, lib/silccore/silcpayload.[ch] to implement
11647           generic payloads described by protocol specifications.  The file
11648           includes implementations for ID Payload and Argument Payload.
11649
11650         * Changed Command Payload implementation to use the new Argument
11651           Payload.  Changed command_xxxx_payload to command_payload_xxxx
11652           to comply with SILC coding conventions.
11653
11654         * Added suppport for Argument Payload handling in Notify Payload
11655           implementation as protocol requires it.  Added the new support
11656           into server and client lib as well.
11657
11658 Thu Oct  5 21:16:28 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11659
11660         * Added support for multiple nicknames on same channel.  [n] is
11661           added locally to the nickname if there are more than one same
11662           nicknames on the channel.
11663
11664         * Server now sends all nicknames that matched WHOIS request.
11665           Client also shows the list received from server.
11666
11667         * Added TOPIC command to client side.  User can now set and show
11668           current topic on channel.
11669
11670         * Added MOTD command to client and server.  Also, server sends the
11671           motd when client connects to the server.
11672
11673         * Changed version strings to comply ISO 8601.
11674
11675 Wed Oct  4 23:29:06 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11676
11677         * Fixed protocol error handling in client library.  It should now
11678           cope even if the SKE fails for some reason.
11679
11680         * Made new protocol specification drafts for submitting to IETF.
11681
11682         * Implemented TOPIC command to server in silcd/command.c.
11683
11684         * Added two new notify types into lib/silccore/silcnotify.h:
11685           SILC_NOTIFY_TYPE_NICK_CHANGE and SILC_NOTIFY_TYPE_TOPIC_SET to
11686           notify nickname change and topic setting/change on a channel.
11687
11688         * API change of command_reply operation in client library.  The
11689           application gets now the status type received from server as well.
11690
11691 Sat Sep 30 16:57:42 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11692
11693         * Removed the function just added to lib/silcutil/silcschedule.[ch].
11694
11695         * Cras fixed and optimized the packet handling even further and
11696           it should work now.  Minor change to the prototype of function
11697           silc_packet_receive_process in lib/silccore/silcpacket.[ch].
11698
11699 Sat Sep 30 08:48:47 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11700
11701         * Added new function into lib/silcutil/silcschedule.[ch]:
11702           silc_schedule_with_fd to select() a specified fd.  The function
11703           returns after timeout expires or data arrives or goes.  The
11704           function is used by packet routines to wait that all data is
11705           received from network.
11706
11707         * Fixed data reading from network in lib/silccore/silcpacket.c.
11708           The code now assures that all data is read from the fd and then
11709           continues packet processing.  This was a bug fix since the code
11710           used to drop some data in some circumstances.
11711
11712         * Added new function into lib/silcclient/client.[ch]:
11713           silc_client_start_key_exchange to start key exchange after
11714           connection has been established to server.  The code internally
11715           now uses this funtion but its main purpose was to provide it
11716           for applications that perform their own connecting.  After
11717           application has created a connection it merely calls this
11718           function to start the key exchange between client and server.
11719           The library takes care of everything else after that.
11720
11721           Updated also lib/silcclient/README to explain the usage of
11722           this new function.
11723
11724         * Do not send to application information that connection has
11725           been established.  Application gets notified it by connect
11726           operation anyway.
11727
11728 Thu Sep 28 23:40:19 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11729
11730         * Applied cras's patch to add silc_schedule_one function.  The
11731           function runs scheduler once and returns.
11732
11733         * Fixed the scheduler after cras messed it up.  The timeout
11734           handling works now as it's supposed to work.
11735
11736         * Added into lib/silccore/ silcnotify.h to include notify
11737           message types support.  Changed silc_server_send_notify*
11738           functions, in server.[ch], to support those new notify types.
11739           Added the support for the notify types into client library,
11740           as well.  Added new notify client operation into ops.h in
11741           lib/silcclient/.
11742
11743         * Changed silc_server_packet_send_to_channel to send normal
11744           packets instead of just channel message packets.  The function
11745           is now used to send the notify packets to channels.  It is not
11746           used to send channel message packets anymore, as server never
11747           sends them anymore.
11748
11749         * Added explicit casting into lib/silcutil/silcbuffmt.c to few
11750           va_arg()s as it seems to require it nowadays.  I guess, if SILC
11751           is compiled with older va_arg() the new code should work anyway.
11752
11753 Wed Sep 13 18:10:14 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11754
11755         * Splitted core library.  Core library (lib/silccore) includes
11756           now only SILC protocol specific core (and common) components.
11757           Created new utility library (lib/silcutil) that includes more
11758           generic purpose stuff.  The stuff for util library was taken
11759           from the old core library.  This was minor and easy split.
11760
11761         * Created SILC Client Library (lib/silcclient) that includes
11762           implementation of the SILC client without user interface.  This
11763           was major move from silc/ directory.  The code has been changed
11764           so that it is transparent towards the user interface.  The
11765           silc/ directory includes now the same user interface as before
11766           and it uses the new client library.  Read lib/silcclient/README.
11767           Basicly, the client library performs everything else related
11768           to SILC except user interface handling.  Also, configuration
11769           files are considered to be part of user interface and library
11770           does not handle them.
11771
11772           This change also changed a lot of structures, function naming etc.
11773           Most important change was that SilcClientWindow object was
11774           renamed to SilcClientConnection in the client library.  Created
11775           also new file lib/silcclient/ops.h.  Also added new files
11776           silc/local_command.[ch] and silc/client_ops.[ch].
11777
11778           All these changes were made to make it easier for user interface
11779           designers to create what ever user interface for the SILC client
11780           they want.
11781
11782           It is also expected that the server will be moved to lib
11783           directory as well and SILC Server Library will be created;
11784           sometimes in the future.
11785
11786         * Removed Local commands from lib/silccore/silccommand.h as
11787           they are application specific and new client library does not
11788           handle any of those anymore.
11789
11790         * Several functions moved to lib/silcutil/silcutilc.[ch] from
11791           old client implementation in silc/.
11792
11793         * Added support for callback functions in SILC_LOG_* macros.
11794           Application can now set its own callbacks that will be called
11795           instead of using the default functions that will always print
11796           the debug messages to stderr (or stdout).  Also, debugging can
11797           now be disabled by setting silc_debug to FALSE and re-enabled by
11798           setting it to TRUE.  Note, that logging will still work even
11799           if debugging is disabled.
11800
11801           New functions in lib/silcutil/silclog.[ch]: silc_log_set_callbacks,
11802           silc_log_reset_callbacks, silc_log_set_debug_callbacks and
11803           silc_log_reset_debug_callbacks.
11804
11805         * To enable debugging in silc client one must give now -d
11806           option on command line.
11807
11808         * Changed silc_schedule_init to automatically allocate task queues
11809           if they are not allocated before calling it.
11810
11811 Thu Sep  7 10:49:33 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11812
11813         * Added GMP 3.1 into math library.
11814
11815 Sun Aug 20 21:27:26 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11816
11817         * Added SILC_PACKET_REMOVE_CHANNEL_USER to remove a client from
11818           a channel in SILC network.  The packet is used by servers and
11819           routers to notify other routers that user has left a channel.
11820           This little feature was missing until now.  Added the feature
11821           to protocol specification as well.
11822
11823           Added functions: silc_server_send_remove_channel_user and
11824           silc_server_remove_channel_user into server.[ch].
11825
11826         * Added SILC_PACKET_REKEY and SILC_PACKET_REKEY_DONE into
11827           lib/silccore/silcpacket.h.  However, they are not implemented
11828           yet.
11829
11830 Sat Aug 19 23:04:16 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11831
11832         * Fixed joining to a channel and sending channel messages
11833           between server and router.  The channel message sending should
11834           now work inside a cell.
11835
11836 Tue Jul 25 20:46:13 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11837
11838         * Fixed the private message sending between server and router.
11839           The private message sending should now work inside a cell.
11840
11841         * Added silc_server_replace_id into server.[ch] to replace
11842           existing ID in the SILC network.
11843
11844         * Added silc_idlist_find_server_by, silc_idlist_replace_client_id
11845           and silc_idlist_replace_server_id into idlist.[ch] in server.
11846
11847 Mon Jul 24 18:33:31 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11848
11849         * Fixed the server to server connections.  Server can again now
11850           connect to router.  Router to router connections probably does
11851           not work just yet.
11852
11853 Thu Jul 20 13:15:01 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11854
11855         * Added dynamic protocol registering support.  Now protocols can
11856           registered and unregistered on the fly.  Patch by cras.
11857
11858 Wed Jul 19 19:08:46 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11859
11860         * Added lib/contrib directory to hold routines that some platforms
11861           don't have but are needed by SILC.
11862
11863         * Added getopt.c, getopt1.c and getopt.h from GNU C library
11864           into lin/contrib to provide getopt() and getopt_long() for
11865           those who don't have it.
11866
11867 Tue Jul 18 20:41:20 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11868
11869         * Added AWAY command to client.  When away message is set and
11870           client receives a private message packet the client automatically
11871           replies to the sender with the away message.
11872
11873         * Fixed a bug in lib/silcmath/mpbin.c: silc_mp_mp2bin.  This
11874           bug seemed to be the cause of recent problems when compiling
11875           with gcc-2.95.
11876
11877         * Added version detection support to SKE protocol specification
11878           and added the new changes to the SKE implementation as well.
11879           There were other minor changes in the SKE protocol as well.
11880
11881           Many changes in lib/silcske/silcske.[ch] and in
11882           lib/silcske/payload.[ch].
11883
11884         * Added ^U functionality, clear input line.  Patch from cras.
11885
11886 Mon Jul 17 23:33:26 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11887
11888         * Mainly small bugfixes on core library.  Fixed some debugging
11889           logging and buffer overflow in silclog.c.
11890
11891         * Updated config.sub and config.guess on the distribution tree.
11892
11893 Sat Jul 15 15:33:48 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11894
11895         * Added command lagging support in server. Client may execute
11896           commands now only once in two seconds.
11897
11898 Thu Jul 13 22:10:21 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11899
11900         * Optimized packet reception. MAC computation and checking is now
11901           also more optimized.  A lot previously duplicated code is now
11902           used as generic by both client and server.
11903
11904         * Fixed key pair generation in clientutil.c
11905
11906 Wed Jul 12 18:28:07 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11907
11908         * Added into lib/silccore/silcbufutil.[ch] new function;
11909           silc_buffer_realloc.
11910
11911         * Moved generic packet sending/encryption functions to
11912           lib/silccore/silcpacket.[ch] from client and server.  Some
11913           rewriting of the functions.
11914
11915         * Moved all generic packet reception/decryption functions to
11916           lib/silccore/silcpacket.[ch] from client and server.  The
11917           packet processing is now much cleaner in both client and server.
11918           These were major changes in both client and server.
11919
11920         * Created many common functions in server to do packet sending.
11921           Previously code were duplicated a lot, this has been removed
11922           with these changes.
11923
11924 Tue Jul 11 20:27:26 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11925
11926         * Rewrote major parts of the ID cache system.  Don't know
11927           whether it is better now or not but at least the API is more
11928           cleaner now.
11929
11930         * Major rewrite on ID cache stuff on client because of the ID
11931           cache API changes.  Added idlist.c to client.
11932
11933         * Also major rewrite on ID cache stuff on server as well.
11934           Major rewrite of idlist.[ch]. SilcXXXList's are now named
11935           SilcXXXEntry's.  We won't keep anymore idlist specific pointers
11936           in hand, instead they are all put into the ID cache system now.
11937           All server_idlist_* routines uses ID cache now instead of
11938           traversing its own lists (those lists does not exist anymore).
11939           SilcIDList though still exists.  Also, SilcXXXEntry's are
11940           now pointers.
11941
11942 Sun Jul  9 15:19:24 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11943
11944         * Finally made the SKE implementation compliant to the protocol
11945           specification.  All mp integers are now binary encoded as
11946           opposed being HEX encoded.
11947
11948         * Added lib/silcmath/mpbin.[ch].  Encoding mp intergers to and
11949           from binary data.
11950
11951         * Added into lib/silccore/silcutil.[ch] PEM encoding/decoding
11952           functions: silc_[encode/decode]_pem.  Also added function
11953           silc_encode_pem_file to PEM encode with newlines ('\n') for
11954           saving into a file.
11955
11956         * SILC public keys are now encoded either PEM or binary.  Same
11957           option is for private keys as well.  By default private keys
11958           are binary encoded and public keys PEM encoded.  Silly HEX
11959           encoding were removed.
11960
11961         * Added into lib/silccrypt/silchash.[ch] silc_hash_fingerprint
11962           function to create fingerprints.
11963
11964         * Fixed a bug in SHA1; does not change the original data anymore.
11965
11966         * Partly implemented INFO command on client and server side.
11967           Fixed CLEAR command.  Changes to SERVER command; show current
11968           server(s) when giving command without arguments.  Added
11969           VERSION command to client.
11970
11971         * Added check to server that unregistered connections cannot
11972           execute commands (unless it is specificly allowed).
11973
11974 Thu Jul  6 18:12:24 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11975
11976         * Fixed screen refresh.
11977
11978         * Fixed channel joining bug from client.  On some circumstances
11979           client tried to join to a channel it had already joined.
11980
11981         * Added public key verification process into client's protocol.c.
11982           The client now verifies the public key from user and saves
11983           it into ~./silc/serverkeys/ directory.
11984
11985           Added into: clientutil.[ch]: silc_client_verify_server_key.
11986
11987         * Changed SKE protocol's silc_ske_initiator_finish function
11988           to accept callback function that verifies the received public
11989           key.  Removed old silc_ske_verify_public_key function.
11990
11991 Wed Jul  5 19:19:02 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11992
11993         * Added into silcpkcs[ch]: silc_pkcs_public_key[_data]_set and
11994           silc_pkcs_private_key[_data]_set.
11995
11996         * Made the password and public authentication more cleaner in
11997           server's protocol.c.
11998
11999         * Removed historic and obsolete protocol `channel_auth' from
12000           both client and server.
12001
12002         * Removed wrong way of sending command status messages from
12003           server to client in server's command.c.  The old way violated
12004           protocol specification.
12005
12006           Changes to silccore/silccommand.[ch]: removed
12007           silc_command_encode_status_payload -> not needed anymore,
12008           changed silc_command_encode_payload_va to accept extra
12009           argument on variable argument list.  The argument type must
12010           now be provided to the function.  Also, added new function:
12011           silc_command_encode_reply_payload_va which is same as
12012           normal command_encode_payload_va except command status type
12013           is provided as extra argument.
12014
12015 Tue Jul  4 18:26:39 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
12016
12017         * Added ~./silc directory handling.  The directory includes the
12018           public and private keys for the client.
12019
12020           Added silc_client_check_silc_dir, silc_client_create_identifier
12021           and silc_client_load_keys.
12022
12023         * Implemented SILC protocol compliant public key.  Added public
12024           and private key saving to and loading from files.
12025
12026           Added into silcpkcs.[ch]: silc_pkcs_encode_identifier,
12027           silc_pkcs_public_key_encode[_data], silc_pkcs_public_key_decode,
12028           silc_pkcs_private_key_encode[_data], silc_pkcs_private_key_decode,
12029           silc_pkcs_public_key_alloc, silc_pkcs_public_key_free,
12030           silc_pkcs_private_key_alloc and silc_pkcs_private_key_free.
12031
12032           Implemented: silc_pkcs_save_[public/private]_key[_data] and
12033           silc_pkcs_load_[public/private]_key.
12034
12035 Mon Jul  3 18:51:27 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
12036
12037         * Added silc_server_get_route (route.[ch]) to get connection
12038           data for the fastest route for given ID.
12039
12040         * Implemented INVITE command on client and server.  The command
12041           were re-defined in the SILC Protocol Specification and the
12042           implementation now complies with the specification.
12043
12044         * Implemented PING command on client and server.
12045
12046         * Implemented NAMES command on client and server.  The server side
12047           supports currently only normal server not router server yet.
12048           Some changes to NAMES definition in SILC protocol specification.
12049
12050 Sun Jul  2 18:23:01 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
12051
12052         * Implemented LEAVE command on client and server.
12053
12054         * Previously deprecated SILC_PACKET_FORWARDED flag is now in use
12055           again.  This change was made to the protocol as well.  Server
12056           should not violate the protocol specification anymore.
12057
12058 Fri Jun 30 14:03:26 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
12059
12060         * Added SOCKS4 and SOCKS5 support to SILC client.  SOCKS5
12061           was tested.  SOCKS4 was not but should work anyway.