updates.
[silc.git] / CHANGES
1 Thu May 10 18:21:10 EEST 2007  Pekka Riikonen <priikone@silcnet.org>
2
3         * Fixed silc_net_tcp_connect crash on Unix and Win32.  Handle
4           the socket async operation correctly.  Changed that DNS lookup
5           is now done during connecting.  Affected files are
6           lib/silcutil/[unix|win32]/silc[unix|win32]net.c.
7
8         * Changed also silc_net_tcp_connect on Symbian to do DNS lookup.
9           Affected file is lib/silcutil/symbian/silcsymbiannet.c.
10
11         * Optimize silc_net_gethostbyname to check if the name is already
12           IP address.  Affected file is lib/silcutil/silcnet.c.
13
14 Wed May  9 19:51:28 EEST 2007  Pekka Riikonen <priikone@silcnet.org>
15
16         * Print filename instead of empty function name in debug output
17           on WIN32.  Affected files are lib/silcutil/silclog_i.h and
18           silclog.c.
19
20         * Rewrote WIN32 SILC Scheduler.  It now handles non-blocking file 
21           descriptors and sockets better.  Though, room for optimization
22           remains.  Affected file is lib/silcutil/win32/silcwin32schedule.c.
23
24         * Removed silc_net_win32_[init|uninit].  They are called now
25           automatically when SILC Scheduler is allocated.  Wrote IPv4
26           address parser because inet_addr seemed not to work on my WIN32.
27           Affected file is lib/silcutil/win32/silcwin32net.c.
28
29         * Improved socketstream.h and stream.h documentation.
30
31 Tue May  8 18:13:38 EEST 2007  Pekka Riikonen <priikone@silcnet.org>
32
33         * Changed private message waiting API in client library to make
34           it work better with multiple waiting threads.  The waiting is
35           not always per client entry instead of per connection.  Affected
36           files are lib/silcclient/client_prvmsg.c, client.h and
37           silcclient.h.
38
39         * Changed silc_packet_wait_init function to accept the the expected
40           Source ID of the packet as argument.  If specified only packets
41           with the specified types and Source ID are delivered.  Affected
42           files are lib/silccore/silcpacket.[ch].
43
44         * Fixed file transfer disconnection crash when closing the session
45           directly in the monitor callback after disconnection.  Affected
46           file is lib/silcclient/client_ftp.c.
47
48         * Make Toolkit compile on WIN32.  Affected files in win32/
49           and in lib/silcutil/win32/.
50
51         * Changed silc_compare_timeval to return negative, zero or
52           positive instead of just TRUE or FALSE.  This fixes 0 timeout
53           task dispatching on Windows.  Affected files are
54           lib/silcutil/silctime.[ch] and silcschedule.c.
55
56 Mon May  7 18:18:48 EEST 2007  Pekka Riikonen <priikone@silcnet.org>
57
58         * Fixed CMODE channel auth public key retrieval.  Affected
59           file is lib/silcclient/command.c.
60
61         * Fixed CMODE command reply to return channel public keys
62           correctly.  Affected files are lib/silcclient/command_reply.c
63           and client_channel.c.
64
65 Sun May  6 12:43:19 EEST 2007  Pekka Riikonen <priikone@silcnet.org>
66
67         * Added current channel key cipher name and HMAC name to
68           SilcChannelEntry.  Fixed channel private key creation.
69           Affected files are lib/silcclient/client_channel.c,
70           client_entry and silcclient_entry.h.
71
72         * Allow formatted nicknames as input to silc_client_get_clients
73           and silc_client_get_clients_whois.  Affected file is
74           lib/silcclient/client_entry.c.
75
76         * Fixed silc_message_payload_free crash.  Affected file is
77           lib/silccore/silcmessage.c.
78
79         * Added SILC_STATUS_ERR_NO_SUCH_PUBLIC_KEY to
80           lib/silccore/silcstatus.h.
81
82 Thu May  3 18:07:50 EEST 2007  Pekka Riikonen <priikone@silcnet.org>
83
84         * Imported libtommath 0.41.  Renamed all mp_* functions to
85           tma_mp_* functions to avoid rare linking problems on systems
86           with mp_* functions.  Affected files are in lib/silcmath/.
87
88 Wed May  2 17:46:25 EEST 2007  Pekka Riikonen <priikone@silcnet.org>
89
90         * SILC Toolkit 1.1 Beta1.
91
92 Wed May  2 11:38:17 EEST 2007  Pekka Riikonen <priikone@silcnet.org>
93
94         * Set the server and router operator modes to local entry after
95           successful OPER or SILCOPER commands.  Affected file is
96           lib/silcclient/command_reply.c.
97
98 Tue May  1 14:17:06 EEST 2007  Pekka Riikonen <priikone@silcnet.org>
99
100         * Ported SILC Socket Stream API, SILC Net API, SILC Schedule API,
101           and other smaller APIs to WIN32.  Affected files are in
102           lib/silcutil/win32/.
103
104         * Changed the various regex APIs as generic code in util library.
105           Affected files are lib/silcutil/silcstrutil.[ch].
106
107 Sat Apr 28 13:47:47 EEST 2007  Pekka Riikonen <priikone@silcnet.org>
108
109         * Ported SILC Server to the new Toolkit API, working towards
110           SILC Server 1.1.  Affected files are in apps/silcd/.
111
112         * Added silc_skr_del_public_key, silc_skr_[ref|unref]_public_key
113           to lib/silcskr/silcskr.[ch].
114
115         * Fixed SILC public key copying to copy the identifier also.
116           Affected file is lib/silccrypt/silcpk.c.
117
118         * Added silc_packet_error_string to lib/silccore/silcpacket.[ch].
119
120         * Fixed OPER and SILCOPER passphrase asking in Client library.
121           Affected file is lib/silcclient/command.c.
122
123 Tue Apr 24 17:55:24 EEST 2007  Pekka Riikonen <priikone@silcnet.org>
124
125         * Fixed command queue enabling after connecting to server.
126           The comparisons was from after changing to silc_utf8_strcasecmp.
127           Affected file is apps/irssi/src/silc/core/silc-servers.c.
128
129         * Fixed nickname setting with own client entry with 1.3 protocol
130           version server.  Affected file lib/silcclient/client_register.c.
131
132         * Ignore error notify for local client entry.  Affected file is
133           lib/silcclient/client_notify.c.
134
135         * Implemented responder rekey to SKE library.  Affected files are
136           lib/silcske/silcske.[ch].
137
138         * Fixed connection auth protocol completion sending.  Affected
139           file lib/silcske/silcconnauth.c.
140
141 Mon Apr 23 17:20:01 EEST 2007  Pekka Riikonen <priikone@silcnet.org>
142
143         * Do not call TCP network listener callback with any error
144           status, as documented.  Affected file is
145           lib/silcutil/unix/silcunixnet.c.
146
147 Sun Apr 22 21:13:28 EEST 2007  Pekka Riikonen <priikone@silcnet.org>
148
149         * Preliminary SILC Server 1.1 changes committed to apps/silcd/.
150
151         * Added SILC_SKR_USAGE_SERVICE_AUTHORIZATION SKR key usage type.
152           Changed silc_skr_find to have SilcSchedule argument and removed
153           it from silc_skr_[alloc|init].  Affected files are
154           lib/silcskr/silcskr.[ch].
155
156         * Allow NULL id for silc_idcache_add.  Affected file is
157           lib/silcapputil/silcidcache.c.
158
159         * Added silc_packet_stream_is_valid, silc_packet_get_ids and
160           silc_packet_engine_get_streams to lib/silccore/silcpacket.[ch].
161           Fixed also channel message encryption with router-to-router
162           packets.
163
164         * Added silc_id_str2id2 to lib/silccore/silcid.[ch].
165
166         * Added silc_net_get_error_string, silc_net_listener_get_ip and
167           silc_net_listener_get_hostname to lib/silcutil/silcnet.[ch].
168
169 Tue Apr 10 15:55:42 CEST 2007  Jochen Eisinger <coffee@silcnet.org>
170
171         * Add option --enable-silc-plugin.  Affected files are
172           apps/irssi/configure.{ad,in}
173
174         * Only compile the SILC Plugin if required.  Affected files are
175           apps/irssi/src/Makefile.am, apps/irssi/src/fe-common/Makefile.am
176
177         * Conditionally build the SILC Plugin.  Affected files are
178           apps/irssi/src/silc/core/Makefile.am,
179           apps/irssi/src/fe-common/silc/Makefile.am
180
181         * Backout delayed protocol exit and replace with a lame busy
182           wait.  Affected files are apps/irssi/src/fe-text/silc.c,
183           apps/irssi/src/silc/core/silc-core.c
184
185         * Fix key generation for SILC Plugin.  Affected file
186           apps/irssi/src/silc/core/clientutil.c
187
188 Tue Apr 10 12:40:19 CEST 2007  Jochen Eisinger <coffee@silcnet.org>
189
190         * Only pass -rpath to libtool when building shared libraries.
191           Affected file lib/Makefile.ad
192
193         * Removing the stray "s" in configure.ad
194
195 Sat Mar 24 19:13:58 CET 2007  Jochen Eisinger <coffee@silcnet.org>
196
197         * Redraw the screen after creating a new key.  Affected file
198           apps/irssi/src/silc/core/clientutil.c
199
200 Sun Mar 18 15:54:10 EET 2007  Pekka Riikonen <priikone@silcnet.org>
201
202         * Added SILC Client setting /set nickname_format that specifies
203           the nickname format string.  Changed default nickname format
204           string to "%n#%a".  Affected file is
205           apps/irssi/src/silc/core/silc-core.c, apps/irssi/silc.conf.
206
207         * Fixed nickname parsing with WHOIS command to accept formatted
208           nicknames.  Changed the silc_client_get_clients_local to allow
209           the searched nickname to be formatted nickname.  Removed %s and
210           %S nickname formatters.  Affected files are in lib/silcclient/.
211
212         * Added silc_client_nickname_parse to Client library API.  Affected
213           file is lib/silcclient/silcclient.h.
214
215         * Fixed nickname parsing and resolving with /MSG, /FILE and /KEY
216           commands.  Affected file are
217           apps/irssi/src/silc/core/silc-servers.c and silc-channels.c.
218
219 Sat Mar 17 19:07:15 CET 2007  Jochen Eisinger <coffee@silcnet.org>
220
221         * Incorporate SILC Plugin patches.  Affected files are
222           apps/irssi/src/fe-common/silc/module-formats.{c,h},
223           apps/irssi/src/silc/core/clientutil.{c,h},
224           apps/irssi/src/silc/core/silc-core.c,
225           apps/irssi/src/silc/core/silc-chatnets.{c,h},
226           apps/irssi/src/fe-common/silc/fe-silcnet.c, and
227           apps/irssi/src/fe-common/silc/module.h
228
229 Wed Mar 14 17:31:28 EET 2007  Pekka Riikonen <priikone@silcnet.org>
230
231         * In notify handling resolve user entries many times if the
232           resolving timedout.  Affected file lib/silcclient/client_notify.c.
233
234         * silc_client_get_clients_local do not return any invalid entries.
235           Affected file is lib/silcclient/client_entry.c.
236
237         * Do not print "there are now xx user on this channel" for users
238           that actually aren't anymore on the channel.  Affected file
239           is apps/irssi/src/client_ops.c.
240
241 Sun Mar 11 17:43:18 CET 2007  Jochen Eisinger <coffee@silcnet.org>
242
243         * When joining channels with a password given in the config file,
244           use it.  Also use it when cycling (it would be better to get
245           the password from the server, but this isn't possible in SILC).
246           Affected files apps/irssi/src/silc/core/silc-servers.c,
247           apps/irssi/src/silc/core/silc-channels.c
248
249 Sun Mar 11 15:22:42 CET 2007  Jochen Eisinger <coffee@silcnet.org>
250
251         * Import perl script for sign_messages from silc-plugin.  Affected
252           file apps/irssi/scripts/silc.pl
253
254 Sun Mar 11 15:19:10 CET 2007  Jochen Eisinger <coffee@silcnet.org>
255
256         * Only wait for a nick on connecting, when it differs
257           (not counting case) from the username.  Affected file
258           is apps/irssi/src/silc/core/silc-servers.c
259
260 Sun Mar 11 13:50:53 CET 2007  Jochen Eisinger <coffee@silcnet.org>
261
262         * Use time settings for lag settings.  Affected file is
263           apps/irssi/src/silc/core/silc-lag.c
264
265 Tue Feb 27 17:07:34 EET 2007  Pekka Riikonen <priikone@silcnet.org>
266
267         * Added silc_thread_yield.  Affected file is
268           lib/silcutil/silcmutex.h.
269
270 Wed Feb 21 17:01:01 EET 2007  Pekka Riikonen <priikone@silcnet.org>
271
272         * Fixed WHOIS command and requested attributes handling in
273           client library.  Affected files are lib/silcclient/command.c
274           and lib/silcclient/client_attrs.c.
275
276         * Fixed silc_time_value to actually work.  Added new function
277           silc_timezone.  Affected files are lib/silcutil/silctime.[ch].
278
279 Tue Feb 20 08:31:28 EET 2007  Pekka Riikonen <priikone@silcnet.org>
280
281         * SILC Client 1.1 beta2.
282
283 Mon Feb 19 16:06:27 EET 2007  Pekka Riikonen <priikone@silcnet.org>
284
285         * Fixed client to properly abort TCP stream creation when
286           giving /QUIT.  Affected file
287           apps/irssi/src/silc/core/silc-servers.c.
288
289         * Fixed several connecting aborting crashes from the client
290           library, packet engine and socket stream.  Affected files
291           are in lib/silclient/, lib/silccore/silcpacket.c and
292           lib/silcutil/unix/silcunixsocketstream.c.
293
294         * Fixed private key export double free crash in key generation.
295           Affected file is lib/silccrypt/silcpk.c.
296
297         * Fixed FSM event waiting when there are multiple signallers
298           and the waiter goes away after the first signal.  Affected
299           file in lib/silcutil/silcfsm.c.
300
301 Sun Feb 18 22:02:22 EET 2007  Pekka Riikonen <priikone@silcnet.org>
302
303         * Fixed FSM event signalling to check if the waiter has gone
304           away already.  Affected file is lib/silcutil/silcfsm.c.
305
306         * Fixed counter mode encryption/decryption to handle non-padded
307           SILC packets correctly.  The silc_cipher_set_iv now
308           in counter mode resets for a new block.  Affected files are
309           in lib/silcske/, lib/silccrypt/, lib/silcpacket/.
310
311 Sun Feb 18 12:15:21 EET 2007  Pekka Riikonen <priikone@silcnet.org>
312
313         * SILC Client 1.1 beta1.
314
315         * Memory leak fixes around the libraries.
316
317 Fri Feb 16 16:53:16 EET 2007  Pekka Riikonen <priikone@silcnet.org>
318
319         * Added better check for epoll() in configure.  Affected file
320           is lib/configure.ad.
321
322 Thu Feb 15 16:50:34 EET 2007  Pekka Riikonen <priikone@silcnet.org>
323
324         * Fixed per scheduler data input buffer in packet engine.  Use
325           list of inbufs instead of just one so that multiple streams
326           can do partial reads to different buffers.  Affected file is
327           lib/silccore/silcpacket.c.
328
329         * Fixed WATCH notify handling in client library.  Affected file
330           is lib/silcclient/client_notify.c.
331
332 Wed Feb 14 17:05:38 EET 2007  Pekka Riikonen <priikone@silcnet.org>
333
334         * Fixed packet wrapper stream API to support encoder/decoder
335           for packets, and to handle partial reading correctly.  Fixed
336           also inbuf size checking in reading to have enough space before
337           reading.  Affected files are lib/silccore/silcpacket.[ch].
338
339         * Rewrote file transfer in client library.  Affected files are
340           in lib/silcclient/.
341
342         * Added TCP/UDP listener (internal) API to client library to have
343           generic way of dealing with listeners.  Fixed Key Agreement and
344           file transfer to use it.  Affected files are in lib/silcclient/.
345
346         * Fixed SKE to process SUCCESS packets synchronously and to call
347           completion synchronously.  Affected file is lib/silcske/silske.c.
348
349         * Fixed pthread rwlock detection.  Affected file includes/silc.h.in.
350
351         * Implemented SILC_ATTRIBYUTE_PHONE_NUMBER.  Affected files are
352           lib/silccore/silcattrs.[ch].  SILC Protocol version 1.3 change.
353
354 Fri Feb  2 22:24:11 EET 2007  Pekka Riikonen <priikone@silcnet.org>
355
356         * Added support for SILC protocol version 1.3 NEW_CLIENT packet
357           to client library.  Affected file is
358           lib/silcclient/client_register.c.
359
360         * Serialize NICK and JOIN commands to avoid problems locally
361           with changing ID while joining to channel.  Affected file is
362           lib/silcclient/command.c.
363
364         * Fixed entry resolving while handling incoming JOIN notify.
365           Handle properly cases, in re-processing of notify packets, where
366           the IDs may become invalid while resolving the entry (like nick
367           change).  Entry is invalid if it doesn't have nickname, and such
368           entries are not delivered to application anymore.  These fixes
369           problems of not seeing JOINs when remote user changes nickname
370           at the same time.  Affected files are in lib/silcclient/.
371
372 Thu Feb  1 18:35:58 EET 2007  Pekka Riikonen <priikone@silcnet.org>
373
374         * Added support for computing message payload MAC in new way
375           (SILC Protocol version 1.3).  Bakcwards support for old way
376           remains.  Affected files are lib/silccore/silcmessage.[ch].
377
378 Sat Jan 27 22:37:30 EET 2007  Pekka Riikonen <priikone@silcnet.org>
379
380         * Added SilcRwLock API, a read/write lock.  Affected files are
381           lib/silcutil/silcmutex.h and in lib/silcutil/[unix|win32|symbian]/.
382
383 Wed Jan 24 18:55:21 EET 2007  Pekka Riikonen <priikone@silcnet.org>
384
385         * Merged Irssi SVN (irssi 0.8.11).  Affected files in apps/irssi/.
386
387 Tue Jan 23 16:05:27 EET 2007  Pekka Riikonen <priikone@silcnet.org>
388
389         * The silc_schedule_set_listen_fd now returns boolean value.
390           Fixed FD task adding to check correctly for already added
391           FD tasks.  Added stricter error checking for FD scheduling
392           with epoll().  Affected files are lib/silcutil/silcschedule.[ch]
393           and lib/silcutil/unix/silcunixschedule.c.
394
395         * The silc_stream_set_notifier now returns boolean value.  Changed
396           all streams to support and check for the error condition.
397           Affected files are in lib/silcutil/.
398
399         * Fixed SKE library session aborting and deletion.  Affected
400           file are lib/silcske/silcske.c.
401
402 Tue Jan 16 18:22:08 EET 2007  Pekka Riikonen <priikone@silcnet.org>
403
404         * Implemented PKCS #1 with appendix with hash OID in the
405           signature.  Affected files are lib/silccrypt/silcpkcs1.[ch],
406           lib/silccrypt/silchash.[ch] and
407           lib/silcasn1/silcasn1[_encode|decode].[ch].
408
409 Sun Jan 14 23:12:41 EET 2007  Pekka Riikonen <priikone@silcnet.org>
410
411         * Added support for Version (V) SILC public key identifier.
412           Affected files are lib/silccrypt/silcpk.[ch].
413
414 Tue Jan  9 19:37:51 EET 2007  Pekka Riikonen <priikone@silcnet.org>
415
416         * Rewrote connection auth request in client library.  It is now
417           done automatically by the library and the resolved method given
418           as a hint to get_auth_method client operation.  Affected files
419           are lib/silcclient/.
420
421 Wed Jan  3 18:06:33 EET 2007  Pekka Riikonen <priikone@silcnet.org>
422
423         * Added silc_packet_stream_wrap into lib/silccore/silcpacket.[ch].
424           It can be used to wrap SilcPacketStream into SilcStream.
425
426         * Fixed %p formatting from silc_snprintf.  Affected file is
427           lib/silcutil/silcsnprintf.c.
428
429         * Ported SFTP library to new utility library.  Ported also
430           the SFTP testers.  Affected files in lib/silcsftp/.
431
432 Tue Jan  2 17:18:46 EET 2007  Pekka Riikonen <priikone@silcnet.org>
433
434         * Added lib/silcutil/silcsnprintf.[ch].  Added in addition
435           of silc_snprintf, silc_vsnprintf, silc_asprintf and
436           silc_vasprintf.
437
438 Sat Dec 30 23:23:17 EET 2006  Pekka Riikonen <priikone@silcnet.org>
439
440         * Added preliminary Symbian support.  Changes around the source
441           tree.  The symbian/ directory now includes Carbide.c++ project
442           files to compile the sources.
443
444         * Added silc_snprintf.  Affected files are
445           lib/silcutil/silcstrutil.[ch].
446
447 Thu Dec 21 18:01:51 EET 2006  Pekka Riikonen <priikone@silcnet.org>
448
449         * Changed SILC_FSM_[CONTINUE|YIELD|WAIT|FINISH] enums to
450           macros.  SILC_FSM_CONTINUE macro now immediately calls the
451           next state instead of first returning back to FSM.  Helps
452           in debugging crashes etc.
453
454           Removed FSM Semaphores.  Introduced FSM Event which is
455           asynchronous event.   Affected files are in lib/.
456
457         * Added epoll(7) support to SILC Scheduler.  It is used by default
458           if it is available.  Affected files are
459           lib/silcutil/silcschedule.[ch],
460           lib/silcutil/unix/silcunixschedule.c.
461
462 Tue Dec 19 20:39:35 EET 2006  Pekka Riikonen <priikone@silcnet.org>
463
464         * Added CTR mode to AES.  Simplified cipher implementation API
465           more.  Affected files are in lib/silccrypt/.
466
467 Sun Dec 17 16:46:55 EET 2006  Pekka Riikonen <priikone@silcnet.org>
468
469         * Removed `detach' client operation.  The detachment data is
470           now delivered in SILC_COMMAND_DETACH command reply to
471           application.  Affected file in lib/silcclient/.
472
473         * Rewrote resuming/detaching in client library.
474
475         * Added boolean encryption indicator for silc_cipher_set_key.
476           Affected files lib/silccrypt/silccipher.[ch].
477
478 Wed Dec 13 18:05:50 EET 2006  Pekka Riikonen <priikone@silcnet.org>
479
480         * Added silc_likely and silc_unlikely macros for GCC branch
481           prediction optimizations.  Affected file lib/silcutil/silctypes.h.
482
483         * Added assembler AES optimization.  Cleaned up the SILC Cipher
484           implementation API.  Affected files are in lib/silccrypt/.
485
486 Tue Dec 12 18:56:14 EET 2006  Pekka Riikonen <priikone@silcnet.org>
487
488         * Changed back the SILC_FSM_THREAD_WAIT operation to not
489           continue to next state if thread is finished already.  That
490           check is not done anymore.  Affected files are
491           lib/silcutil/silcfsm.[ch].
492
493 Sun Dec 10 13:54:52 EET 2006  Pekka Riikonen <priikone@silcnet.org>
494
495         * Removed silc_packet_[get|set]_ciphers and
496           silc_packet_[get|set]_hmacs.  Added silc_packet_set_keys that
497           handle REKEY_DONE packet sending in rekey.  Affected files
498           are lib/silccore/silcpacket.[ch].
499
500         * Added silc_fsm_is_started.  Affected files are
501           lib/silcutil/silcfsm.[ch].
502
503         * Added settings sign_channel_message, sign_private_message
504           and key_exchange_rekey_pfs to SILC Client.  Added UDP transport
505           support for key agreement in /KEY command. Affected files
506           in apps/irssi/src/silc/core/.
507
508         * During SILC Client initialization forward log messages to
509           stderr.   Affected files in apps/irssi/src/silc/core/.
510
511 Thu Dec  7 19:07:21 EET 2006  Pekka Riikonen <priikone@silcnet.org>
512
513         * Added silc_ske_get_key_material.  Affected files are
514           lib/silcske/silcske.[ch].
515
516         * Added silc_packet_stream_is_udp.  Affected files are
517           lib/silccore/silcpacket.[ch].
518
519         * Added SKE packet retransmission support with UDP transport.
520           Affected file is lib/silcske/silcske.c.
521
522 Sun Dec  3 22:00:12 EET 2006  Pekka Riikonen <priikone@silcnet.org>
523
524         * Added silc_socket_stream_is_udp.  Affected file is
525           lib/silcutil/silcsocketstream.[ch].
526
527         * Added UDP transport support to packet engine.  Affected file
528           is lib/silccore/silcpacket.c.
529
530         * Added silc_socket_stream_is_udp.  Affected file is
531           lib/silcutil/silcsocketstream.[ch].
532
533 Sat Nov 18 11:33:03 EET 2006  Pekka Riikonen <priikone@silcnet.org>
534
535         * Added silc_packet_send_va[_ext] to send variable argument
536           formatted buffers.  Affected files lib/silcore/silcpacket.[ch].
537
538         * Timeout freelist garbage collection added to scheduler.
539           Affected file lib/silcutil/silcschedule.c.
540
541 Thu Nov  9 18:12:15 EET 2006  Pekka Riikonen <priikone@silcnet.org>
542
543         * Added silc_show_public_key_file to
544           lib/silcapputil/silcapputil.[ch].
545
546         * Added SILC_STR_ADVANCE support for buffer unformatting.
547           Affected file lib/silcutil/silcbuffmt.c.
548
549 Tue Nov  7 18:04:36 EET 2006  Pekka Riikonen <priikone@silcnet.org
550
551         * Added silc_string_split to lib/silcutil/silcstrutil.[ch].
552
553         * Added silc_mutex_assert_locked to lib/silcutil/silcmutex.h.
554
555         * silc_fsm_continue[_sync] now cancels erlier timeout set with
556           silc_fsm_next_later.  Affected file lib/silcutil/silcfsm.c.
557
558 Sat Nov  4 21:50:37 EET 2006  Pekka Riikonen <priikone@silcnet.org
559
560         * Added SILC_STR_FUNC to buffer format API.  Affected files
561           are lib/silcutil/silcbuffmt.[ch].
562
563         * Added silc_buffer_[s]enlarge to lib/silcutil/silcbuffer.h.
564
565         * No more memory allocation for message payload parsing.
566           Pre-allocated buffer can be used with message payload encoding.
567           Affected files lib/silccore/silcmessage.[ch].
568
569 Fri Oct 27 21:01:26 EEST 2006  Pekka Riikonen <priikone@silcnet.org
570
571         * Added silc_buffer_sunformat and silc_buffer_sunformat_vp
572           to silcutil/silcbuffmt.[ch].
573
574 Sun Oct 22 13:03:07 EEST 2006  Pekka Riikonen <priikone@silcnet.org
575
576         * Added SILC_STR_BUFFER to format and unformat SilcBuffer.
577           Affected file lib/silcutil/silcbuffmt.[ch].
578
579         * Removed silc_schedule_signal_[un]register and
580           silc_schedule_signal_call.  Added silc_schedule_task_add_signal
581           to add signal task.  Only one callback per signal may be
582           added.  The signals are now automatically called back to
583           caller.  Affected files lib/silcutil/silcschedule.[ch] and
584           silcutil/[unix/win32]/silc[unix/win32]schedule.c.
585
586         * Added silc_time_msec and silc_time_usec to silcutil/silctime.[ch].
587
588         * Added SilcSKEParams for SKE parameters and simplied even more
589           the SKE interface.  Affected files are lib/silcske/silcske.[ch].
590           Added support for IV included and session port handling with
591           UDP/IP connections.
592
593         * Added Secure ID (SID) support with IV Included flag (for UDP/IP)
594           in lib/silccore/silcpacket.[ch].  Added silc_packet_set_sid
595           which is called after every rekey when IV Included flag is used.
596           See SILC specifications for details.
597
598 Thu Oct 19 10:03:03 EEST 2006  Pekka Riikonen <priikone@silcnet.org
599
600         * Added lib/silcapputil and moved SILC application specific
601           utility routines from the generic util library lib/silcutil
602           to the new library.  Removed lib/silcidcache and moved that
603           to lib/silcapputil as well.
604
605 Tue Sep 19 00:14:11 EEST 2006  Pekka Riikonen <priikone@silcnet.org>
606
607         * Added SILC_STR_ADVANCE.  Affected file is
608           lib/silcutil/silcbuffmt.[ch].
609
610         * The silc_buffer_strformat preserves buffer locations now.
611
612         * Added lib/silcutil/silcatomic.h for atomic operations.
613
614 Sat Sep 16 11:23:06 EEST 2006  Pekka Riikonen <priikone@silcnet.org>
615
616         * Added lib/silchttp, SILC HTTP server, a very simple HTTP
617           server.
618
619         * Fixed MIME deocing when data portion is not present.
620           Affected file lib/silcutil/silcmime.c.
621
622 Wed Jul 19 12:06:38 EEST 2006  Pekka Riikonen <priikone@silcnet.org>
623
624         * Moved lib/silccore/silcidcache.[ch] to lib/silcutil/.
625
626         * Added IV Included support to packet routines, to allow
627           packet sending and receiving on UDP/IP.  Affected files are
628           lib/silccore/silcpacket.[ch].
629
630         * Added SILC_FSM_YIELD.  Affected files lib/silcutil/silcfsm.[ch].
631
632 Tue Jul 18 20:10:28 EEST 2006  Pekka Riikonen <priikone@silcnet.org>
633
634         * Added UDP support to network and socket stream library.
635
636 Sat Jun 24 22:33:18 EEST 2006  Pekka Riikonen <priikone@silcnet.org>
637
638         * Added conditional variables.  New files are
639           lib/silcutil/silcondvar.h and platform specific implementations.
640
641 Thu Jan  5 20:02:31 CET 2006 Patrik Weiskircher <pat@icore.at>
642
643         * make sure session->hostname and session->port are valid before the
644           application callback is done, since things will go wrong if the
645           application immediately calls silc_client_file_receive. Affected
646           file lib/silcclient/client_ftp.c.
647           Patch received from Stefan Siegel <stesie@brokenpipe.de>, thanks!
648
649 Fri Dec 30 22:54:21 EET 2005  Pekka Riikonen <priikone@silcnet.org>
650
651         * New SILC PKCS API enabling support for other public keys
652           and certificates, lib/silccrypt/silcpkcs.[ch], silcpk.[ch].
653
654         * Separated SILC Public Key Payload routines from the PKCS API
655           to lib/silccore/silcpubkey.[ch].
656
657 Wed Dec 28 13:55:22 EET 2005  Pekka Riikonen <priikone@silcnet.org>
658
659         * Added SILC Key Repository library, lib/silcskr.
660
661         * Added SILC Server library, lib/silcserver.
662
663 Mon Dec 19 18:04:24 EET 2005  Pekka Riikonen <priikone@silcnet.org>
664
665         * MIME objects in attributes now use SilcMime.  Affected files
666           are lib/silccore/silcattrs.[ch].
667
668 Sat Dec 17 20:13:31 EET 2005  Pekka Riikonen <priikone@silcnet.org>
669
670         * Synchronize semaphore posting for real threads in FSM.
671           Affected files are lib/silcutil/silcfsm.c, silcfsm_i.h.
672
673 Mon Nov 28 17:06:54 EET 2005  Pekka Riikonen <priikone@silcnet.org>
674
675         * Added silc_file_set_nonblock.  Affected file is
676           lib/silcutil/silcfileutil.h.
677
678         * Added silc_fd_stream_file to lib/silcutil/silcfdstream.[ch].
679
680 Sat Nov 26 16:13:40 EET 2005  Pekka Riikonen <priikone@silcnet.org>
681
682         * FSM based implementation of SILC SKE.  Simpler interface also.
683           Affected files are in lib/silcske/.
684
685         * Added SilcBool type.  Affected file lib/silcutil/silctypes.h.
686
687 Sat Nov 19 17:34:51 EET 2005  Pekka Riikonen <priikone@silcnet.org>
688
689         * Added SilcMime API to lib/silcutil/silcmime.[ch].  The old
690           silc_mime_parse is available but deprecated.
691
692         * Check that packet is valid when processing key exchange,
693           authentication and rekey protocols.  Fixes a crashbug.
694           Affected files are apps/silcd/protocol.c and
695           lib/silcclient/protocol.c.
696
697         * Added SILC_HASH_MAXLEN to lib/silccrypt/silchash.h, and changed
698           all hash buffers to use that instead of fixed values.
699
700 Wed Nov 16 15:47:12 EET 2005  Pekka Riikonen <priikone@silcnet.org>
701
702         * Added SHA-256 to crypto library.  The SHA-256 takes now
703           precedence over SHA-1.
704
705 Thu May 26 20:31:06 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
706
707         * Check for valid return value from regcomp.  Affected file
708           lib/silcutil/unix/silcunixutil.c.
709
710 Tue May 10 23:11:17 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
711
712         * Fixed silc_hash_uint to work with integers.  Affected
713           file lib/silcutil/silcutil.c.
714
715 Tue May 10 15:11:53 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
716
717         * Rewritten SILC Log API.  Affected files lib/silcutil/silclog.[ch].
718
719 Mon May  9 12:00:08 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
720
721         * Fixed channel public key list saving on JOIN command reply
722           on backup router.  Affected file apps/silcd/command_reply.c.
723
724 Mon May  2 10:42:49 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
725
726         * Added default limit how many channels client can join,
727           default is 50.  Added 'channel_join_limit' configuration
728           option to server too.  Affected files are apps/silcd/command.c
729           and serverconfig.[ch].
730
731 Sun May  1 17:42:55 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
732
733         * --without-silc -> --with-silc, --without-irssi -> --with-irssi.
734           On Toolkit the server and client are not compiled by default.
735           Affected file configure.ad.
736
737 Thu Apr 28 15:57:37 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
738
739         * Added lib/contrib/getopt.[ch] for platforms that don't
740           have it (it is not GPL implementation).
741
742         * Fixed compilation when pkg-config is used.
743
744 Wed Apr 27 11:49:41 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
745
746         * A comma in invite/ban string is invalid, check for it.
747           Affected file apps/silcd/server_util.c.
748
749         * Added SERVICE command to the server.  It parses the command
750           request but SILC Server does not support services for the
751           time being.  Affected file apps/silcd/command.[ch].
752
753         * Added SERVICE command and command reply to client library.
754           It is however incomplete.  Updated Toolkit documentation.
755           Affected files are lib/silcclient/command[_reply].[ch].
756
757         * Fixed IDENTIFY/WHOWAS command reply to send the username
758           correctly (uninitialized buffer).  Affected file is
759           apps/silcd/server_query.c.
760
761 Mon Apr 25 14:25:24 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
762
763         * Moved silcer/, silc/, silcd/ and irssi/ to apps/.  This
764           finalizes the major restructuring of the CVS tree.
765
766 Mon Apr 25 00:39:30 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
767
768         * Send empty MOTD reply if MOTD file cannot be read.
769           Affected file silcd/command.c.
770
771 Sun Apr 24 12:01:37 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
772
773         * Optimized primer number generator to use simpler conversion
774           routines.  Also assure that the prime number will have the
775           highest bit set after modifying it.  Affected file is
776           lib/silcmath/silcprimegen.c.
777
778         * Added LibTomMath to SILC Math library (SILC_DIST_TMA).
779
780         * Added FastTomMath to SILC Math Library (SILC_DIST_TFM),
781           for now only for testing purposes, it will not be delivered
782           in any distribution for now.
783
784         * Removed NSS MPI from the source tree.  Due to upcoming
785           license change for the SILC Toolkit, we cannot deliver the
786           NSS MPI anymore.  I decided to replace it in all distributions
787           with public domain library.
788
789         * Removed GNU regex from lib/contrib and introduced free
790           GNU compatible regex, lib/contrib/regexpr.[ch].  Added
791           GNU regex compatible API to it (only partial).
792
793         * Removed getopt routines from lib/contrib.
794
795 Fri Apr 22 12:21:44 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
796
797         * Use silc_server_send_command_reply to send replies instead
798           of encoding packet itself.  Affected file silcd/command.c.
799
800         * Added command sending and receiving statistics to server.
801           Affected files in silcd/.
802
803         * GCC 4 warning fixes.  -Wno-pointer-sign option is now used
804           with GCC, for it not to warn about pointer signedness.
805
806 Tue Apr 19 11:57:35 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
807
808         * Added context to the SilcIDCache destructor.  Affected
809           files are lib/silccore/silcidcache.[ch],
810           lib/silcclient/client.c and silcd/server.c.
811
812 Mon Apr 18 09:53:28 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
813
814         * Added pkg-config check to configure.
815
816         * The PublicKeyDir must not be used with Admin block in server
817           config.  Affected file silcd/serverconfig.c.
818
819 Sat Apr 16 20:23:48 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
820
821         * Added Autodist.
822
823 Thu Apr 14 20:25:08 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
824
825         * Handle empty LIST command reply correcttly in server.  Affected
826           file silcd/command_reply.c.
827
828         * Handle empty LIST command reply correctly in client library.
829           The application will now receive one LIST command reply with
830           all arguments set to NULL if there are no channels.  Updated
831           Client Library documentation accordingly.  Affected file
832           lib/silcclient/command_reply.c.
833
834 Tue Apr 12 00:02:09 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
835
836         * Added channel name string stringprep profile to the protocol
837           and implementation to allow a little free'er channel name
838           strings.  Affected files are lib/silcutil/silcstringprep.[ch].
839
840         * Added silc_channel_name_[check|verify] to check and verify
841           channel name strings.  Affected files are
842           lib/silcutil/silcstrutil.[ch].
843
844         * Added support for the new channel name preparation in client
845           library and server.  Affected files in lib/silcclient and
846           silcd/.
847
848 Mon Apr 11 13:40:27 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
849
850         * Added the Autodist into the source tree.  It replaces the
851           old ./prepare.  It can be used to create distributions as
852           previously.  See README.CVS and README.DIST.  See
853           distributions in distdir/.
854
855 Sun Apr 10 11:30:56 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
856
857         * Make sure query sends at least an error back if nothing
858           more is sent.  Affected file silcd/server_query.c.
859
860 Thu Apr  7 14:50:01 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
861
862         * During query, check if the original command caller goes
863           away.  If it does, stop the query.  Affected file
864           silcd/server_query.c.
865
866         * Check for valid channel creation in JOIN command reply.
867           Affected file lib/silcclient/command_reply.c.
868
869         * Handle the resolver counter in silc_client_get_users_by_channel
870           callback correctly.  Fixed auto-join bug in Gaim.  Affected
871           file lib/silcclient/idlist.c.
872
873 Wed Apr  6 16:56:53 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
874
875         * Added some better error messages.  Affected file
876           silcd/command_reply.c and packet_receive.c.
877
878         * Handle error in WATCH command propely on backup router.
879           Affected file silcd/command.c.
880
881         * Fixed freeing of unfreeable variable in WHOIS command reply.
882           Affected file silcd/command_reply.c.
883
884 Wed Apr  6 09:10:31 CEST 2005  Pekka Riikonen <priikone@silcnet.org>
885
886         * Added pkg-config .pc file creation for silc core library
887           and silcclient library.  A patch by c0ffee.
888
889         * Removed the need for GNU Libidn.  Added the simple stringprep
890           from libidn into lib/contrib/.  It is now used also on Windows
891           build.
892
893 Mon Apr  4 15:15:46 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
894
895         * Simplified the invite and ban string handling in the
896           server.  Check for valid invite and ban arguments also.
897           Affected file silcd/server_util.c.
898
899 Sun Apr  3 14:58:53 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
900
901         * Added WATCH list announcing in backup router protocol.
902           Affected files are silcd/command.c, server.c, server_backup.c.
903
904         * Do not change users mode to founder on normal server/backup
905           if the founder mode is set, and user is first one to join.
906           Affected file silcd/pcaket_receive.c.
907
908         * Do not send CUMODE_CHANGE notify back to sender.  Affected
909           file silcd/packet_receive.c.
910
911         * Added getrusage() to take noise in SILC RNG.  A patch by
912           Mika Boström.  Affected files are configure.in.pre,
913           includes/silcincludes.h.in, lib/silccrypt/silcrng.c.
914
915 Sat Apr  2 18:09:30 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
916
917         * Splitted the SILC libraries configuration into a configure
918           fragment into lib/configure.ad.  It is now possible, once
919           this feature is added, to specify whether to compile or not
920           compile included SILC libraries.  Affected files are
921           configure.in.pre, lib/silcmath/mpi/configure.ad,
922           lib/configure.ad, Makefile.defines.pre and
923           Makefile.defines_int.pre.
924
925         * Added --with-silc-includes and --with-silc-libs to configure.
926           If specified the included libs are not compiled, but the
927           specified libs are used.  Pkg-config is not yet supported.
928           Affected file configure.in.pre.
929
930         * Fixed WATCH command handling on backup router.  Router does not
931           send the watch command any more to backup if it originates from
932           backup.  Affected file silcd/command.c.
933
934 Fri Apr  1 18:52:47 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
935
936         * Changed announcing to not announce unregistered clients.
937           Affected file silcd/server.c.
938
939         * Fixed username handling in command reply.  Affected file
940           silcd/command_reply.c.
941
942         * Log files are now 0600.  Affected file lib/silcutil/silclog.c.
943
944 Thu Mar 31 22:34:22 CEST 2005  Patrik Weiskircher <pat@icore.at>
945
946         * Added new define SILC_MACOSX, if __APPLE__ and __MACH__ is defined.
947           Affected file: includes/silcincludes.h.in
948
949         * bool is defined as _Bool on Mac OS X now.
950           Affected file: lib/silcutil/silctypes.h
951
952 Thu Mar 31 08:52:06 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
953
954         * Added support for UTF-8 nicknames, channel names and
955           server names in client library.  Affected files in
956           lib/silcclient/.
957
958         * Added __SILC_HAVE_PTHREAD, __SILC_HAVE_SIM, __SILC_HAVE_LIBIDN,
959           and __SILC_ENABLE_DEBUG to include/silcclient.h for third-party
960           software to check how Toolkit has been compiled.
961
962 Wed Mar 30 22:16:35 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
963
964         * Added silc_utf8_str[n]casecmp into lib/silcutil/silcutf8.[ch].
965
966         * Use silc_utf8_str[n]casecmp instead of strcmp routines
967           in library and in SILC Client when dealing with nicknames
968           and other identifier strings.  Affected file in client lib
969           and irssi.
970
971         * Convert nickname to UTF-8 in /msg and /smsg.  Affected file
972           irssi/src/silc/core/silc-servers.c.
973
974 Wed Mar 30 10:50:02 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
975
976         * Fixed idcache to work with the new identifier strings.
977           Affected file lib/silccore/silcidcache.c.
978
979         * Added UTF-8 hash and compare function for SilcHashTable.
980           Affected file lib/silcutil/silcutil.[ch].
981
982         * Added casefolding stringprep, SILC_CASEFOLD_PREP.
983           Affected file lib/silcutil/silcstringprep.[ch].
984
985         * Changed the identifier string handling to include the original
986           format in client, server, channel entries and normalized
987           format in cache.  Affected files in silcd/.
988
989 Tue Mar 29 16:51:35 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
990
991         * Added support for the new identifier strings and their
992           validity checking.  Nicknames, channel names and usernames
993           can now include practically any kind of letters and various
994           other characters.  Affected files in silcd/ and in libraries.
995
996           NOTE: comparing these strings should now be done with memcmp()
997           to check binary compatibility.  All these strings are normalized
998           and casing is irrelevant.
999
1000         * Added silc_identifier_check to lib/silcutil/silcstrutil.[ch]
1001           as easy function for applications to check whether identifier
1002           strings are valid.
1003
1004 Tue Mar 29 00:45:11 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
1005
1006         * Fixed SILC_STRING_LDAP_DN encoding and decoding.  Affected
1007           file lib/silcutil/silcutf8.c.
1008
1009         * Added SILC_STRING_UTF8_ESCAPE to lib/silcutil/silcstrutil.h.
1010
1011 Mon Mar 28 22:46:23 CEST 2005  Jochen Eisinger <jochen@penguin-breeder.org>
1012
1013         * Make public key in getkey reply mandatory.  Affected file
1014           lib/silcclient/command_reply.c
1015
1016 Sun Mar 27 19:03:31 CEST 2005  Patrik Weiskircher <pat@icore.at>
1017
1018         * Added Parameter dont_register_crypto_library to
1019           SilcClientParam. If set to TRUE, silcclient library will
1020           not initalize the Crypto Libraries and application
1021           will need to do it. Affected file lib/silcclient/silcclient.h,
1022           lib/silcclient/client.c.
1023
1024 Sun Mar 27 19:02:48 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
1025
1026         * Imported new silc_utf8_[encode|decode] routines from
1027           my internal SILC 1.1 source tree.  New encodings added:
1028           SILC_STRING_LOCALE (SILC_STRING_LANGUAGE is deprecated),
1029           SILC_STRING_UTF8, SILC_STRING_PRINTABLE, SILC_STRING_VISIBLE,
1030           SILC_STRING_TELETEX, SILC_STRING_NUMERICAL and
1031           SILC_STRING_LDAP_DN.
1032
1033         * Splitted UTF-8 routines into lib/silcutil/silcutf8.[ch].
1034
1035         * Implemented stringprep (RFC 3454) API.  Internally we use
1036           GNU Libidn's stringprep, for now, so it is required now to
1037           compile SILC sources.  Added lib/silcutil/silcstringprep.[ch].
1038
1039         * Added checking for GNU Libidn and --with-libidn to configure.
1040
1041 Wed Mar 23 11:20:33 CET 2005  Jochen Eisinger <jochen@penguin-breeder.org>
1042
1043         * If the passphrases entered do not match while generating a new key,
1044           completly start over instead of going into an infinite loop asking
1045           the user to re-enter the passphrase correctly.  Affected file
1046           lib/silcutil/silcapputil.c
1047
1048 Sun Jan  9 14:28:51 CET 2005  Pekka Riikonen <priikone@silcnet.org>
1049
1050         * Make sure server is removed from backup list when it is
1051           deleted.  Affected files silcd/command.c, server.c,
1052           server_util.c.
1053
1054         * Close socket when connecting to router fails.  Affected
1055           file silcd/server.c.
1056
1057 Tue Jan  4 13:06:26 CET 2005  Jochen Eisinger <jochen@penguin-breeder.org>
1058
1059         * Adopt configuration toolchain to current auto-tools.
1060           Affected files prepare, irssi/configure.in
1061         * Revert most of the UTF-8 fixes to SILC Client 1.0.1.  Will
1062           redo that.  Affected files irssi/src/silc/core/client_ops.c,
1063           irssi/src/fe-common/silc/fe-silc-channels.c
1064         * Take over command line options into silcclient data structure.
1065           Affected file irssi/src/silc/core/silc-core.c
1066
1067 Wed Dec  8 16:15:11 CET 2004  Pekka Riikonen <priikone@silcnet.org>
1068
1069         * Do not try to initiate backup resuming protocol forever.
1070           Affected file silcd/server_backup.c.
1071
1072 Wed Nov 24 18:24:05 CET 2004  Pekka Riikonen <priikone@silcnet.org>
1073
1074         * ID change in resuming has to be done before changing
1075           detached client's modes, since the ID change may fail and
1076           leave ghosts on the network.  Affected file is
1077           silcd/packet_receive.c.
1078
1079 Tue Nov 23 16:54:35 CET 2004  Pekka Riikonen <priikone@silcnet.org>
1080
1081         * Fixed Win32 scheduler to not stuck anymore.  A patch from
1082           Juha Räsänen.  Affected file is
1083           lib/silcutil/win32/silcwin32schedule.c.
1084
1085         * Fixed QoS parsing for connection blocks in server.  Affected
1086           file is silcd/serverconfig.c.
1087
1088         * Fixed server statistics increasing in server.  Affected file
1089           is silcd/server.c.
1090
1091         * The CLOSE command now marks backup router as self disconnected
1092           to avoid resuming problems.  Affected file silcd/command.c.
1093
1094 Wed Sep 22 19:46:32 CEST 2004  Patrik Weiskircher <pat@icore.at>
1095
1096         * When using silc_net_create_connection[_async], and your system can
1097           create IPv6 sockets, it will try to connect to the IPv6 host.
1098           Now it tries to connect to an IPv4 host if IPv6 fails. Affected
1099           file lib/silcutil/unix/silcunixnet.c
1100
1101 Fri Jun 18 19:26:58 CEST 2004  Pekka Riikonen <priikone@silcnet.org>
1102
1103         * Check for valid route when receiving packet from router and
1104           when routing it to local server in the cell.  A patch from
1105           Matt Miller.  Affected files silcd/router.c and server.c.
1106
1107 Sat May  1 13:55:54 CEST 2004  Patrik Weiskircher <pat@icore.at>
1108
1109         * Couldn't detach and reattach twice, because of the previous
1110           commit. Affected file silcd/packet_receive.c
1111
1112 Fri Apr 30 19:40:28 CEST 2004  Patrik Weiskircher <pat@icore.at>
1113
1114         * Added check to ignore Port value if Initiator is FALSE.
1115           Remote router coudln't connect if Port was set. Affected file
1116           silcd/serverconfig.c
1117
1118         * If some client tries to resume more than once at the same time,
1119           server crashed. Router didn't crash, but showed odd behaviour
1120           (didn't allow clients to join anymore, ..). Affected files
1121           silcd/packet_receive.c silcd/idlist.h
1122
1123 Mon Mar 15 21:10:08 EET 2004  Pekka Riikonen <priikone@silcnet.org>
1124
1125         * Destroy the file transfer session in silc_client_file_close
1126           with timeout.  Affected file lib/silcclient/client_ftp.c.
1127
1128         * Call SFTP server monitor in READ and WRITE after the actual
1129           operations.  Affected file lib/silcsftp/sftp_server.c.
1130
1131 Wed Mar 10 21:30:02 EET 2004  Pekka Riikonen <priikone@silcnet.org>
1132
1133         * Create one configure script from configure fragments
1134           (configure.ad).  This is a first step towards new distribution
1135           system.  Affected files prepare, configure.in.pre,
1136           lib/silcmath/mpi/configure.ad.
1137
1138 Wed Mar 10 18:35:24 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
1139
1140         * Removed expiring of client key pair.  Affected file is
1141           irssi/src/silc/core/clientutil.c
1142
1143 Tue Mar  9 17:11:58 EET 2004  Pekka Riikonen <priikone@silcnet.org>
1144
1145         * Check the number of connections from real number of
1146           connections instead of socket number, when deciding if
1147           server is full.  Affected files are silcd/server.c,
1148           server_internal.h and silcd.c.
1149
1150         * Clarified the connections_max meaning in General section
1151           in doc/example_silcd.conf.in.
1152
1153         * The reconnect_keep_trying default value set to TRUE
1154           if it is not defined in the config file.  Affected file
1155           silcd/serverconfig.c.
1156
1157 Wed Mar  3 15:13:49 CET 2004  Pekka Riikonen <priikone@silcnet.org>
1158
1159         * Fixed crashbug in connection closing, after a protocol
1160           completion callback, which might have closed it already.
1161           Affected file silcd/server.c.
1162
1163         * Fixed rekey with PFS in backup router.  It did not allow
1164           rekeys with PFS, and when the rekey protocol timedout
1165           it crashed the backup router without the above fix.  Affected
1166           file silcd/packet_send.c and server.c.
1167
1168 Sat Feb 28 16:25:09 EET 2004  Pekka Riikonen <priikone@silcnet.org>
1169
1170         * The silc_client_add_channel_private_key now returns the
1171           private key context if pointer is given as argument.
1172           Affected files are lib/silcclient/silcclient.h and
1173           client_channel.c.
1174
1175         * Added support for using channel private keys in SILC
1176           Client Library even if the private key mode is not set
1177           on the channel.  Affected file lib/silcclient/client_channel.c.
1178
1179         * The channel private key used to decrypt message is now
1180           delivered to the application in the 'channel_messageÃ' client
1181           operation.  Affected files are lib/silcclient/silcclient.h
1182           and client_channel.c.
1183
1184         * Fixed wrong arg type for user limit in CMODE command reply.
1185           Affected file silcd/command.c.
1186
1187         * The user limit is now taken and saved to SilcClientEntry in
1188           JOIN and CMODE command replies and in CMODE_CHANGE notify.
1189           Affected files lib/silcclient/silcclient.h, command_reply.c
1190           and client_notify.c.
1191
1192         * Added support to the new private message key indicator
1193           packet.  Added a new function to the client library:
1194           silc_client_send_private_message_key_request.  The sender
1195           indicates to be initiator, and receiver is responder.
1196           Added the indicator to the SilcClientEntry as 'prv_resp'
1197           boolean.  Affected files are lib/silcclient/silcclient.h
1198           client.[ch], and client_prvmsg.c.
1199
1200 Fri Feb 27 11:25:26 CET 2004  Pekka Riikonen <priikone@silcnet.org>
1201
1202         * Fixed the JOIN command calling when called with both
1203          -auth and -founder.  Affected file is lib/silcclien/command.c.
1204
1205 Wed Feb 25 23:12:11 EET 2004  Pekka Riikonen <priikone@silcnet.org>
1206
1207         * Check watcher list for resumed clients as well.  Affected
1208           file is silcd/packet_receive.c.
1209
1210 Tue Feb 24 16:49:10 EET 2004  Pekka Riikonen <priikone@silcnet.org>
1211
1212         * Implemented the user limit to the CMODE_CHANGE notify,
1213           CMODE command reply and JOIN command reply in server.
1214           Affected files are silcd/server.c, command.c, command_reply.c,
1215           packet_send.c and packet_receive.c.
1216
1217 Mon Feb 23 23:31:15 EET 2004  Pekka Riikonen <priikone@silcnet.org>
1218
1219         * Defined SILC_STRFMT_END that must be used now with
1220           silc_buffer_strformat, instead of SILC_STR_END.  Fixes
1221           crashes on AMD64.  Affected files are lib/silcutil/silcbuffmt.h,
1222           lib/silcclient/silcvcard.c, silcd/server_util.c.
1223
1224         * Fixed the adding of public key to the WATCH list in server.
1225           Fixed the WATCH notify sending to client.  Affected files
1226           are silcd/packet_send.[ch], command.c, server_util.c.
1227
1228         * Implemented the watching by public key in the SILC Client
1229           Library and SILC Client.  Affected files are
1230           lib/silcclient/command.c and client_notify.c.
1231
1232 Mon Feb 23 09:30:30 CET 2004  Pekka Riikonen <priikone@silcnet.org>
1233
1234         * Added support for public key watching in server.  Affected
1235           files are silcd/server.c, server_internal.h, command.c,
1236           server_util.c.
1237
1238 Sun Feb 22 19:03:59 EET 2004  Pekka Riikonen <priikone@silcnet.org>
1239
1240         * Added public key to the SIlcClientEntry.  Affected files
1241           are lib/silcclient/silcclient.h, command_reply.c, idlist.c
1242
1243         * Fixed the get_clients_whois reply processing to return
1244           exactly same entries server returned.  Makes it possible
1245           to search using attributes.  Affected file is
1246           lib/silcclient/idlist.c.
1247
1248 Sat Feb 21 19:21:57 EET 2004  Pekka Riikonen <priikone@silcnet.org>
1249
1250         * Save founder key to SilcChannelEntry.  Affected files are
1251           lib/silcclient/silcclient.h, command_reply.c, idlist.c.
1252
1253 Fri Feb 20 20:37:38 EET 2004  Pekka Riikonen <priikone@silcnet.org>
1254
1255         * Call the monitor callback with _CLOSED status from the
1256           silc_client_file_close.  Affected files are
1257           lib/silcclient/client_fpt.c, silcclient.h
1258
1259         * Added silc_client_get_clients_whois which resolves using
1260           WHOIS, and supports requested attributes as well.
1261           Affected files are lib/silcclient/silcclient.h, idlist.c.
1262
1263 Fri Feb 19 21:09:22 EET 2004  Pekka Riikonen <priikone@silcnet.org>
1264
1265         * Added support for asking the destination filename where
1266           the downloaded file is saved in the file transfer.  Affected
1267           files are lib/silccilent/silcclient.h, client_ftp.c.
1268
1269 Wed Feb 18 02:46:17 EET 2004  Pekka Riikonen <priikone@silcnet.org>
1270
1271         * Fixed error handling in resuming data processing.  Affected
1272           files are lib/silcclient/client_resume.c and client.c.
1273
1274 Tue Feb 17 19:34:30 EET 2004  Pekka Riikonen <priikone@silcnet.org>
1275
1276         * Fixed silc_client_send_private_message to return TRUE correctly.
1277           Affected file lib/silcclient/client_prvmsg.c.
1278
1279         * Added topic to the SilcChannelEntry.  Affected files are
1280           lib/silcclient/silcclient.h, command_reply.c, client_notify.c.
1281
1282 Fri Feb 13 14:19:14 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
1283
1284         * Use conn->cmd_ident for all silc_client_command_call()s.  Affected
1285           file lib/silcclient/command.c
1286
1287 Fri Feb 13 13:53:45 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
1288
1289         * Convert all commands to UTF-8 before passing them to the
1290           client library.  Still need to convert replies from UTF-8 to
1291           the locale encoding.  Affected file
1292           irssi/src/silc/core/silc-cmdqueue.c
1293
1294 Fri Feb 13 13:13:07 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
1295
1296         * redirect all silc_client_command_calls through a queueing framework.
1297           This fixes /CYCLE and the annoying "nick change after auto-joining
1298           a channel".  Furthermore it defines one central point where
1299           command parameters can be UTF-8-ified.  Affected files
1300           irssi/src/silc/core/Makefile, client_ops.c, silc-channels.c,
1301           silc-servers.[ch], silc-core.c, silc-cmdqueue.[ch], silc-lag.c
1302
1303 Fri Feb 13 12:04:41 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
1304
1305         * use asynchronous connect() to establish router connections.
1306           Fixes problem when the primary router goes down.  Affected files
1307           silcd/server.c, silcd/server_backup.c
1308
1309 Thu Feb 12 20:09:59 EET 2004  Pekka Riikonen <priikone@silcnet.org>
1310
1311         * Added SILC_[32|64]_TO_PTR and SILC_PTR_TO_[32|64] macros.
1312           Fixed various compilation warnings when type casting ints
1313           to pointers or vice versa, of different size.  Updates around
1314           the source free.
1315
1316 Tue Feb  3 23:25:17 EET 2004  Pekka Riikonen <priikone@silcnet.org>
1317
1318         * Surrogates not allowed in UTF-8 strings, updated decoder.
1319           Affected file lib/silcutil/silcstrutil.c.  Added UTF-8
1320           testers in lib/silcutil/tests/ directory.
1321
1322 Wed Jan 14 18:42:44 EET 2004  Pekka Riikonen <priikone@silcnet.org>
1323
1324         * Added SILC_CLIENT_CONN_ERROR_KE, ERROR_AUTH, ERROR_RESUME and
1325           ERROR_TIMEOUT SilcClientConnectionStatus errors.  Affected
1326           files are lib/silcclient/silcclient.h, client.c.
1327
1328 Mon Jan 12 13:01:10 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
1329
1330         * When resuming a session fails, notify the user that the session
1331           file needs to be removed eventually.  Affected files
1332           irssi/src/fe-common/silc/module-formats.[ch],
1333           irssi/src/silc/core/client_ops.c.
1334
1335 Tue Jan 04 12:16:04 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
1336
1337         * Added DIST_SUBDIRS symbols to include all subdirs in distributions.
1338           Affected files lib/silcutil/Makefile.am, lib/silcmath/Makefile.am
1339
1340         * Typofix in Irssi::Silc module.  Affected file
1341           irssi/src/perl/silc/Silc.xs.
1342
1343 Tue Jan 04 02:43:44 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
1344
1345         * Changed the way NOTICE flagged messages are treated. Added support
1346           for notices in queries and signing notices.  Affected files
1347           irssi/default.theme; irssi/docs/help/in/notice.in;
1348           irssi/src/fe-common/silc/module-formats.[ch], fe-silc-messages.c;
1349           irssi/src/silc/core/client_ops.c, silc-channels.c, silc-servers.c
1350
1351         * Fixed typo in /ACTION help.  Affected file
1352           irssi/docs/help/in/action.in
1353
1354 Mon Jan 03 23:26:38 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
1355
1356         * Fixed typo in perl module.  Affected file
1357           irssi/src/perl/silc/Server.xs
1358
1359         * Changed the way ACTION flagged messages are treated. Added support
1360           for actions in queries and signing actions.  Affected files
1361           irssi/default.theme; irssi/docs/help/in/action.in;
1362           irssi/src/fe-common/silc/module-formats.[ch], fe-silc-messages.c,
1363           fe-silc-queries.c; irssi/src/silc/core/client_ops.c, silc-channels.c,
1364           silc-servers.[ch]
1365
1366 Mon Jan 03 16:04:29 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
1367
1368         * Incorrectly reported error when client had to be resolved from
1369           server in /SMSG.  Affected file irssi/src/silc/core/silc-servers.c
1370
1371 Sat Jan  3 16:37:15 EET 2004  Pekka Riikonen <priikone@silcnet.org>
1372
1373         * Fixed whois public key hash table deleting and adding in
1374           detached client case.  Affected file silcd/packet_receive.c.
1375
1376 Sat Jan 03 12:15:38 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
1377
1378         * Changed filenames of silc/fe module not to collide with filenames
1379           from core/fe.  Also seperated public messages printing from
1380           query messages printing.  Affected files are all in
1381           irssi/src/fe-common/silc.
1382
1383 Sat Jan  3 12:18:07 EET 2004  Pekka Riikonen <priikone@silcnet.org>
1384
1385         * Fixed the invite process handling during joining to use
1386           correct server name for the client that is matched against
1387           the invite string for the channel.  Wrong server name caused
1388           inability to join the channel.  Affected file is
1389           silcd/command.c.
1390
1391 Fri Jan  2 23:34:17 EET 2004  Pekka Riikonen <priikone@silcnet.org>
1392
1393         * Fixed the CUMODE channel founder authentication on normal
1394           server to not remove the founder rights on existing founder
1395           before checking that router accepts the mode change.  Affected
1396           files are silcd/command.c and silcd/packet_receive.c.
1397
1398         * Remove the server entry correctly when rekey timeouts and
1399           remote router connection on normal server is closed.  Fixes
1400           a crash where server uses the freed server entry.  Affected
1401           file silcd/server.c.
1402
1403 Fri Jan 02 10:28:15 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
1404
1405         * Add /SILCNET [ADD|REMOVE|LIST] command to manage different SILC
1406           networks.  This is the first step in solving the bug about
1407           /SERVER ADD -silcnet <silcnet>.  Affected files
1408           irssi/docs/in/silcnet.in; irssi/src/fe-common/silc/Makefile.am,
1409           fe-silcnet.c, fe-common-silc.c, module-formats.[ch];
1410           irssi/src/silc/core/silc-chatnets.[ch], silc-core.c, Makefile.am
1411
1412 Thu Jan 01 20:11:32 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
1413
1414         * /SMSG and /MMSG now correctly create new queries. Affected files
1415           irssi/src/fe-common/silc/fe-messages.c, irssi/scripts/silc-mime.pl
1416
1417         * Add basic support for SILC protocol specific variables in perl.
1418           Affected files irssi/src/perl/silc/*, irssi/configure.in,
1419           irssi/src/perl/Makefile.am
1420
1421 Wed Dec 31 17:06:55 CET 2003  Jochen Eisinger <jochen@penguin-breeder.org>
1422
1423         * Don't use silc_get_input, it's obviously not reliable.  Fixes
1424           issue when the current key expires.  Affect file
1425           irssi/src/silc/core/clientutils.c
1426
1427         * Make the session data filename configurable.  This makes it
1428           possible to have different session files for different
1429           SILC networks.  Affected files irssi/src/silc/core/silc-core.c,
1430           client_ops.[ch], silc-servers.c,
1431           irssi/src/silc/fe-common/silc/module-formats.[ch]
1432
1433         * Use the same set of libtool files for the MPI lib as for the
1434           rest of the toolkit.  Affected files lib/silcmath/mpi/config.guess,
1435           config.sub, configure.in, install-sh, missing, mkinstalldirs
1436
1437 Sun Dec 28 21:57:39 EET 2003  Pekka Riikonen <priikone@silcnet.org>
1438
1439         * Fixed server statistics decrementing error to not go to
1440           negative.  Affected file silcd/packet_receive.c.
1441
1442 Sat Dec 20 14:42:36 EET 2003  Pekka Riikonen <priikone@silcnet.org>
1443
1444         * Use silc_server_query_add_error to add error in public key
1445           search error.  Added support in send_reply to send errors
1446           without specific argument.  Affected file silcd/server_query.c.
1447
1448         * Fixed the WHOIS, IDENTIFY and WHOWAS error handling in SILC
1449           Client for NO_SUCH_NICK.  It was against the protocol specs.
1450           Affected file irssi/src/silc/core/client_ops.c.
1451
1452         * Added backwards support for the wrong NO_SUCH_NICK error sending
1453           in server.  To be removed in SILC Server 1.0.  Both old clients
1454           and clients with fixed error handling now works.  Affected file
1455           silcd/server_query.c.
1456
1457 Sat Dec 20 00:44:47 CET 2003  Patrik Weiskircher <pat@icore.at>
1458
1459         * fixed a bug in the whois using attributes function where no
1460           error was sent if no nickname and client id but the attributes were
1461           given to whois. Affected file silcd/server_query.c
1462
1463 Tue Dec 16 21:34:59 CET 2003  Patrik Weiskircher <pat@icore.at>
1464
1465         * remove public key from public key hashtable on detach. Affected
1466           file silcd/packet_receive.c
1467
1468         * free public key hashtable before removing clients on server
1469           shutdown. Affected file silcd/server.c
1470
1471         * remove public key prior deleting client-data on killing a client.
1472           Affected file silcd/server_util.c
1473
1474 Sat Dec 06 21:35:14 CET 2003  Patrik Weiskircher <pat@icore.at>
1475
1476         * Getting the MOTD from other servers works now. Affected
1477           files are silcd/command.c and silcd/command_reply.c
1478
1479 Thu Dec 04 11:33:46 CET 2003  Jochen Eisinger <jochen@penguin-breeder.org>
1480
1481         * Initialize the variable idletag, since it is tested in
1482           silc_core_deinit for its default value.  Affected file
1483           irssi/src/silc/core/silc-core.c
1484
1485 Sun Nov 30 19:47:02 CET 2003  Patrik Weiskircher <pat@icore.at>
1486
1487         * Fixed signed channel messages across cells. Affected file
1488           silcd/packet_send.c
1489
1490 Fri Nov 28 19:13:21 EET 2003  Pekka Riikonen <priikone@silcnet.org>
1491
1492         * Changed the SILC_LOG_* macros to not be empty if SILC_DEBUG
1493           is not defined.  They can now be safely used in if-statements
1494           without braces.  Affected file lib/silcutil/silclog.h.
1495
1496         * Added the checks for backup closing connection due to error
1497           (local or remote) and thus not allow the resuming to occur
1498           in reconnect.  Affected files are silcd/packet_send.c
1499           and server.c.
1500
1501 Tue Nov 25 15:20:59 EET 2003  Pekka Riikonen <priikone@silcnet.org>
1502
1503         * Help file updates.  Affected files in irssi/src/docs/help/in/.
1504
1505 Wed Nov 23 20:51:21 CET 2003  Patrik Weiskircher <pat@icore.at>
1506
1507         * Fixed channel messages across cells. Affected file
1508           silcd/packet_send.c
1509
1510 Wed Nov 12 11:34:56 EET 2003  Pekka Riikonen <priikone@silcnet.org>
1511
1512         * Fixed file transmission accepting in client library to not
1513           start the negotiation if user hasn't accepted the transfer,
1514           instead create new session for resent transfer.  Affected
1515           file lib/silcclient/client_ftp.c.
1516
1517         * Show the session ID in the file transmision list.  Remove
1518           session from list that failed to transfer.  Switch the current
1519           session automatically after transmission, and in errors, to new
1520           session if other sessions exists in the transfer list.  Affected
1521           files are irssi/src/silc/core/silc-servers.c,
1522           irssi/src/fe-common/silc/modfule-formats.c.
1523
1524 Mon Nov 10 14:41:40 CET 2003  Jochen Eisinger <jochen@penguin-breeder.org>
1525
1526         * Fixed MIME header parsing for the hopefully last time.  Affected
1527           file lib/silcutil/silcstrutil.c
1528
1529 Mon Nov 10 13:03:46 EET 2003  Pekka Riikonen <priikone@silcnet.org>
1530
1531         * Rewrote the PKCS#1 routines.  Added lib/silccrypt/silcpkcs1.[ch].
1532
1533         * The SILC RNG is now gauranteed to return non-zero random
1534           values.  Affected files are lib/silccrypt/silcrng.[ch].
1535
1536 Sun Nov  9 20:44:56 EET 2003  Pekka Riikonen <priikone@silcnet.org>
1537
1538         * Fixed nickname formatting when changing only case of the
1539           nickname.  Affected file lib/silcclient/idlist.c.
1540
1541 Sun Nov  9 19:33:59 CET 2003  Jochen Eisinger <jochen@penguin-breeder.org>
1542
1543         * Fixed a memory leak and incorrect printing of the "appears as"
1544           message.  Affected file irssi/src/silc/core/client_ops.c
1545
1546 Sun Nov  9 17:45:11 EET 2003  Pekka Riikonen <priikone@silcnet.org>
1547
1548         * Added CRT (Chinese Remainder Theorem) supported RSA
1549           private keys and private key operations.  This significantly
1550           increases private key operation efficiency.  No compatibility
1551           issues with new or old private keys.  Affected files are
1552           lib/silccrypt/rsa.[ch], rsa_internal.h and pkcs1.c.
1553
1554 Sat Nov  8 13:08:53 EET 2003  Pekka Riikonen <priikone@silcnet.org>
1555
1556         * Fixed GCC-3.3.2 related compilation warnings from the
1557           source tree.
1558
1559 Fri Nov  7 23:01:47 EET 2003  Pekka Riikonen <priikone@silcnet.org>
1560
1561         * Removed RC6 from distributions.
1562
1563 Fri Nov  7 19:38:42 EET 2003  Pekka Riikonen <priikone@silcnet.org>
1564
1565         * Added some better comments to lib/silccrypt/silcpkcs.h,
1566           optimized some routines in lib/silccrypt/silcpkcs.c.
1567           Added test_silcpkcs into lib/silccrypt/tests/.
1568
1569         * Fixed silc_rng_global_init to actually init the global RNG
1570           if RNG wasn't provided for it.  Affected file is
1571           lib/silccrypt/silrng.c.
1572
1573 Thu Nov  6 21:08:28 EET 2003  Pekka Riikonen <priikone@silcnet.org>
1574
1575         * Added silc_hash_table_find_by_context_ext.  Affected files
1576           lib/silcutil/silchashtable.[ch].
1577
1578         * Save the public key on normal server in WHOIS command reply
1579           from attributes, if present, and add it to public key hash
1580           table.  Fixes WHOIS resolving by public key on normal server.
1581
1582           Optimized the attributes resolving on normal server to not
1583           resolve if we resolved them already from router.
1584
1585           Affected files are silcd/server_query.c, command_reply.c.
1586
1587 Wed Nov  5 19:36:30 CET 2003 Patrik Weiskircher <pat@icore.at>
1588
1589         * Added support for whois using attributes.
1590           Affected files silcd/command_reply.c, silcd/packet_receive.c,
1591           silcd/server.c, silcd/server_internal.h, silcd/server_query.c,
1592           silcd/server_util.c
1593
1594         * Added support for whois using public key attribute to /WHOIS i
1595           client command. Affected files irssi/docs/help/in/whois.in,
1596           irssi/src/silc/core/silc-servers.c, lib/silcclient/command.c
1597
1598 Wed Nov  5 23:37:36 EET 2003 Pekka Riikonen <priikone@silcnet.org>
1599
1600         * Fixed UMODE setting in server when the client has anonymous
1601           mode set.  The mode setting was not working.  Affected file
1602           silcd/command.c.
1603
1604 Mon Nov  2 11:36:08 CET 2003 Jochen Eisinger <jochen@penguin-breeder.org>
1605
1606         * Fixed some bugs and typos related to sending split messages.
1607           Print notification when sending messages with /MMSG.  Affected
1608           files irssi/scripts/silc-mime.pl, irssi/src/silc/core/client_ops.c
1609
1610 Fri Oct 31 12:33:59 EET 2003 Pekka Riikonen <priikone@silcnet.org>
1611
1612         * Optimized the socket referencing in packet routines, client
1613           library and server.  Affected files are lib/silccore/silcpacket.c,
1614           lib/silcclient/client.c and silcd/server.c.
1615
1616         * If silc_socket_set_qos is given with NULL arguments the QoS is
1617           reset from the socket.  Affected files are
1618           lib/silcutil/silcsockconn.[ch].
1619
1620 Thu Oct 30 21:23:24 CET 2003 Jochen Eisinger <jochen@penguin-breeder.org>
1621
1622         * Add a /LISTKEYS command which lists the locally cached
1623           client and server keys.  Affected files
1624           irssi/src/fe-common/module-formats.[ch],
1625           irssi/src/silc/core/silc-{channels,servers}.c
1626           irssi/docs/help/in/listkeys.in
1627
1628 Thu Oct 30 20:23:40 EET 2003 Pekka Riikonen <priikone@silcnet.org>
1629
1630         * Check that packet queue purging was successful.  Affected
1631           files lib/silcclient/client.c and silcd/packet_send.c.  Related
1632           to MAC failed errors.
1633
1634         * Do not clear the inbuf even if it is empty if QoS was applied
1635           to it.  Otherwise the QoS data is cleared and MAC failed error
1636           will occur.  Affected file lib/silccore/silcpacket.c.
1637
1638         * Use the rekey period time as rekey protocol timeout value.
1639           If the rekey does not succeed during the rekey period there's
1640           something very wrong, and we most likely end up with wrong keys,
1641           do graceful reconnect then.   Affected file silcd/server.c.
1642
1643         * Take reference of the socket in the parser context, as it's
1644           possible to have the parsers in queue after the socket is
1645           disconnected and this may cause crash.  Affected files are
1646           lib/silccore/silcpacket.c, lib/silcclient/client.c and
1647           silcd/server.c.
1648
1649 Thu Oct 30 17:01:01 EET 2003 Pekka Riikonen <priikone@silcnet.org>
1650
1651         * Fixed KICK command reply sending, it sent to replies.
1652           Affected file silcd/command.c.
1653
1654 Wed Oct 30 14:06:52 CET 2003 Jochen Eisinger <jochen@penguin-breeder.org>
1655
1656         * Finish the silc-mime.pl script. It now supports MIME type
1657           guessing using magic files, signing data messages, executing
1658           MIME handlers in background. Affected files
1659           irssi/scripts/silc-mime.pl and irssi/docs/help/in/mmsg.in
1660
1661         * Changed MIME signal handler to make things easier for the perl
1662           script. Affected files irssi/src/silc/core/client_ops.c,
1663           silc-servers.c, and irssi/docs/signals.txt
1664
1665         * Cleaned up the silc_mime_parse function and fixed detection
1666           of wrapped header lines. Affected file lib/silcutil/silcstrutil.c
1667
1668 Sun Oct 26 21:19:02 EET 2003 Pekka Riikonen <priikone@silcnet.org>
1669
1670         * Resolve the IP for file transfer listener from the connection
1671           socket.  Affected file lib/silcclient/client_ftp.c.
1672
1673         * Accept NULL hostname parameter in the functions
1674           silc_net_check_[local|remote]_by_socket.  Do not reverse lookup
1675           if hostname is not wanted.
1676
1677 Fri Oct 24 21:24:12 CEST 2003  Jochen Eisinger <jochen@penguin-breeder.org>
1678
1679         * Fixed race condition between silc_client_init and
1680           my_silc_scheduler. Affected file irssi/src/silc/core/silc-core.c
1681
1682 Fri Oct 24 16:43:40 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
1683
1684         * Fixed file transfer connection closing when SIGNOFF for
1685           the client is received from server.  Affected file is
1686           lib/silcclient/client_ftp.c.
1687
1688 Tue Oct 21 13:35:57 CEST 2003  Pekka Riikonen <priikone@silcnet.org>
1689
1690         * Check for disconnected socket in QUIT callback.  Affected
1691           file silcd/command.c.
1692
1693 Thu Oct 21 09:43:17 CEST 2003  Jochen Eisinger <jochen@penguin-breeder.org>
1694
1695         * Modified the MIME parsing to allow \n and \r\n as delimiters.
1696           Affected files lib/silcutil/silcstrutil.c
1697
1698         * Cleaned up the escape/unescape functions for correctness and
1699           speed. Affected file irssi/src/silc/core/client_ops.c
1700
1701         * Removed handling for data messages with Content-Type: text/*,
1702           moved parsing of MIME headers to the signal handler, added
1703           support for signing and verifying data messages. Affected
1704           files are irssi/docs/signals.txt, irssi/src/silc/core/client_ops.c,
1705           irssi/src/silc/core/silc-{servers,channels}.c
1706
1707         * Added a perl script for handling data messages based on
1708           information read from Mailcap files. New file
1709           irssi/scripts/silc-mime.pl
1710
1711 Mon Oct 20 16:08:22 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
1712
1713         * Added new SILC_MESSAGE_FLAG_ACK that can  be used to
1714           acknowledge recepetion of a message to the sender.  Updated
1715           protocol specs.
1716
1717 Sat Oct 18 11:55:33 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
1718
1719         * Unregister channel key saving callback when deleting channel.
1720           Affected file lib/silcclient/idlist.c.
1721
1722         * Do not remove the client from channels in NOTIFY_TYPE_SIGNOFF
1723           before calling notify client operation.  Affected file is
1724           lib/silcclient/client_notify.c.
1725
1726         * Unregister QoS tasks when deleting the socket connection.
1727           Affected files lib/silcutil/silcsockconn.[ch],
1728           unix/silcunixsockconn.c.
1729
1730         * Implemented latest presence-attrs draft changes.  Affected
1731           files lib/silccore/silcattrs.h and
1732           irssi/src/silc/core/silc-queries.c.
1733
1734 Tue Oct 14 18:24:53 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
1735
1736         * Save old channel keys in list to allow more rapid change
1737           of channel keys if server for some reason does that.  This
1738           avoids loosing so many channel messages due to not having
1739           key to decrypt.  Affected file lib/silcclient/silcclient.h,
1740           idlist.c and client_channel.c.
1741
1742 Mon Oct 13 21:37:47 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
1743
1744         * Continued backup router tests and fixes.  Affected files
1745           silcd/server_backup, server_util.c, server.c.  See TODO.
1746
1747 Sun Oct 12 19:58:18 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
1748
1749         * Fixed SERVER_SIGNOFF handling in servers.  The client
1750           was removed from wrong list thus not removing the client
1751           at all.  Affected file silcd/packet_receive.c.
1752
1753         * Do not execute rekey protocol for disabled connections as
1754           it would never go through.  Affected file silcd/server.c.
1755
1756         * Added timeout for rekey protocol to catch if the protocol
1757           never executes successfully.  Affected files silcd/server.c
1758           and protocol.h.
1759
1760 Sat Oct 11 15:39:22 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
1761
1762         * Abandon packet processing for disconnected sockets.  Check
1763           this always after calling packet processing callback.
1764           Affected file lib/silccore/silcpacket.c.
1765
1766         * Fixed double registration disconnection code in server.
1767           Closed wrong connection.  Affected file silcd/packet_receive.c.
1768
1769 Fri Oct 10 16:27:12 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
1770
1771         * On normal server reconnect to primary during resuming 4
1772           times, then give up.  Affected file silcd/server_backup.c.
1773
1774         * If during reconnecting to routers we notice we have router
1775           connection but no primary router set, the server is in desync.
1776           Reconnect to primary to restore network.  Affected file
1777           silcd/server.c.
1778
1779         * Assure that only one protocol is exeucting at the same time.
1780           Added checks for all protocols.  Affected files are
1781           silcd/server.c and server_backup.c.
1782
1783 Thu Oct  9 20:24:09 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
1784
1785         * Check that a string is not already part on invite/ban
1786           string when processing it.  Affected file silcd/server_util.c.
1787
1788 Thu Oct  9 12:06:40 CEST 2003  Pekka Riikonen <priikone@silcnet.org>
1789
1790         * Fixed the CUMODE_CHANGE for founder mode changes to comply
1791           with 1.2 version of the protocol.  Affected file is
1792           silcd/packet_receive.c.
1793
1794 Wed Oct  8 19:41:15 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
1795
1796         * ERR_BAD_PASSWORD now returns the Channel ID of the channel
1797           where the passphrase was given.  Affected file is
1798           silcd/command.c.
1799
1800 Wed Oct  8 09:32:12 CEST 2003  Pekka Riikonen <priikone@silcnet.org>
1801
1802         * INVITE and BAN notifys are now delivered from routers to
1803           servers (but not clients) on the channel.  Updated specs and
1804           code.  Affected files silcd/packet_[send|receive].[ch],
1805           command.c, server.c and server_util.c.
1806
1807         * Implemented INVITE and BAN announcing.  Affected files are
1808           silcd/server.[ch], server_util.c.
1809
1810         * Implemented SilcStatus error type argument returning in
1811           command reply error in server.  Affected file silcd/command.c.
1812
1813         * Implemented SilcStatus argument returning in comand reply
1814           in client library.  The command_reply client operation now
1815           returns error specific arguments as well.  Affected files
1816           are lib/silcclient/command_reply.[ch], client_resume.c,
1817           lib/silccore/silcstatus.[ch].
1818
1819 Sun Oct  5 20:22:08 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
1820
1821         * Backup router protocol version 1.2 implemented.  Testing still
1822           required.  Affected files in silcd/server_backup.[ch], server.c,
1823           packet_receive.c and server_internal.h.
1824
1825 Sun Oct  5 12:36:37 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
1826
1827         * silc_client_send_[channel|private]_message now return TRUE
1828           or FALSE.  Affected file lib/silcclien/client_channel.c and
1829           client_prvmsg.c.
1830
1831 Thu Oct  2 17:03:09 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
1832
1833         * Check for explicit nickname in INVITE and BAN processing
1834           during join as well (and don't expect only wildcards in
1835           invite/ban strings).  Affected file silcd/command.c.
1836
1837         * Fixed the INVITE and BAN by public key.  The public key saved
1838           is the PK payload (as specified) not the raw data.  Affected
1839           file silcd/server_util.c.
1840
1841 Wed Oct  1 20:29:06 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
1842
1843         * UTF-8 text message support for actions and notices in SILC
1844           Client.  Affected file irssi/src/silc/core/client_ops.c.
1845
1846         * silc_get_username and silc_get_real_name now returns sensible
1847           data on Win32.  Patch by Toni Willberg.  Affected file is
1848           lib/silcutil/win32/silcwin32util.c.
1849
1850 Sun Aug 24 23:35:19 CEST 2003  Jochen Eisinger <c0ffee@penguin-breeder.org>
1851
1852         * Provide a signal handler to send MIME encoded messages and emit
1853           a signal when a MIME encoded message is received. Also document
1854           the signals for usage with the perl interface.
1855
1856           A sample perl script will be supplied at a later point.
1857
1858           Affected files are irssi/docs/signals.txt,
1859           irssi/src/silc/core/client_ops.[ch],
1860           irssi/src/silc/core/silc-{channels,servers}.c
1861
1862 Sun Aug 24 12:58:30 CEST 2003  Jochen Eisinger <c0ffee@penguin-breeder.org>
1863
1864         * Use SILC_COMMAND_PING to estimate the round-trip time to the
1865           server. Use this time to display a lag and disconnect when it
1866           exceeds a specified limit.
1867
1868           Affected files are irssi/src/silc/core/silc-{lag,core}.c.
1869
1870 Mon Aug 11 17:14:17 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
1871
1872         * Remove the channel auth list in normal server if router
1873           encofrces its list during connecting.  Send notify to channel
1874           to remove the mode to remove the list.  Affected files are
1875           silcd/server_util.c and silcd/packet_receive.c.
1876
1877 Wed Aug  6 14:52:04 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
1878
1879         * Added support for channel public keys.  Updated protocol specs
1880           and implemented it.  Affected files are
1881           silcd/command.c, command_reply.c, lib/silcclient/command.c,
1882           lib/silcclient/command_reply.c.
1883
1884 Wed Jul 23 12:17:01 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
1885
1886         * Ignore SIGXFSZ and SIGXCPU signals in server.  They can
1887           terminate the process on Linux.  Affected file silcd/silcd.c.
1888
1889 Mon Jun  2 19:13:27 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
1890
1891         * Check for NULL buffer in silc_buffer_clear.  Affected file
1892           is lib/silcutil/silcbuffer.h.
1893
1894         * Simplified the backup router protocol by removing the _GLOBAL
1895           types.  Updated protocol specs and the code.  Affected files
1896           are silcd/server_backup.[ch].
1897
1898 Thu Apr 24 19:50:25 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
1899
1900         * Deny '@' and '!' from nicknames since they are reserved
1901           by the SILC_COMMAND_INVITE and SILC_COMMAND_BAN commands.
1902           Updated protocol specs and the code.
1903
1904           Affected files are silcd/server_util.[ch].
1905
1906 Wed Apr  9 18:51:59 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
1907
1908         * Fixed stack overflow in Irssi SILC client.  Affected
1909           file irssi/src/silc/core/client_ops.c.
1910
1911         * Check that Host is set in ServerConnection and RouterConnection
1912           in silcd.conf.  Affected file silcd/serverconfig.c.
1913
1914         * Fixed crash in server with protocol completion callbacks,
1915           namely rekey and backup resuming protocols.  Affected files
1916           are silcd/server_backup.c and silcd/server.c.
1917
1918         * Fixed rekey protocol to not restart if it is started already.
1919           Affected files are lib/silcclient/client.c and
1920           silcd/server.c.c
1921
1922 Mon Mar 17 18:35:24 EET 2003  Pekka Riikonen <priikone@silcnet.org>
1923
1924         * Rewrote SilcList, affected file lib/silcutil/silc*list.h.
1925
1926         * Fixed EOF handling in SILC Config, affected file
1927           lib/silcutil/silcconfig.c.
1928
1929         * Fixed buffer overflows in lib/silcutil/silcstrutil.c.
1930
1931         * Fixed RESOLVING flag handling in JOIN notify and other
1932           notifys to handle the resolvings correctly in client library.
1933           Affected file lib/silcclient/client_notify.c.
1934
1935         * Do not send full INVITE and BAN lists in INVITE and BAN
1936           notifys, only the changed information.  Affected file
1937           silcd/command.c.
1938
1939         * Fixed INVITE notify sending in INVITE command, send it
1940           only when needed.  Affected file silcd/command.c.
1941
1942         * Handle the founder key change properly in CMODE_CHANGE
1943           notify.  Bug #122.  Affected file silcd/packet_receive.c.
1944
1945 Sun Mar  9 16:29:20 EET 2003  Pekka Riikonen <priikone@silcnet.org>
1946
1947         * Remove the mark for output (mark it only for input) after
1948           purging outgoing queue.  Prevents the "Error in select()"
1949           floods.  Affected file silcd/packet_send.c.
1950
1951         * Fixed incorrect connection deletion from client library
1952           after calling "connect" client operation.  Could cause
1953           crashes for example during reconnect timeouts.  Affected
1954           files are lib/silcclient/client.c and
1955           irssi/src/silc/core/client_ops.c.
1956
1957         * Check server private key file permissions before starting
1958           the server.  Affected file silcd/serverconfig.c.
1959
1960 Tue Feb  4 22:53:26 EET 2003  Pekka Riikonen <priikone@silcnet.org>
1961
1962         * NULL terminate allocated string in silc_buffer_strformat.
1963           Affected file lib/silcutil/silcbuffmt.c.
1964
1965         * Rewrote the invite/ban list string handling in server to
1966           use SilcBuffer instead.  Affected files are silcd/command.c
1967           and silcd/server_util.c.
1968
1969 Mon Feb  3 14:43:52 CET 2003  Pekka Riikonen <priikone@silcnet.org>
1970
1971         * Fixed double free in CMODE command when setting new HMAC
1972           for channel.  Affected file silcd/command.c.
1973
1974         * Added couple of missing memset's to zero sensitive memory.
1975           Affected files silcd/command.c, lib/silcclient/command.c.
1976
1977 Sun Jan 26 12:20:30 EET 2003  Pekka Riikonen <priikone@silcnet.org>
1978
1979         * Fixed a double free in INVITE command error handling in
1980           server.  Affected file silcd/command.c.
1981
1982         * Added macros SILC_SWAB_[16|32] to swab byte order of
1983           16-bit and 32-bit unsigned integers.  Affected file
1984           lib/silcutil/silctypes.h.
1985
1986         * Use the SILC_SWAB_16 instead of htons() in server when
1987           handling ports since the ports in structures are always
1988           in little-endian order (regardless of platform).  Affected
1989           file silcd/serverid.c and silcd/server_backup.c.
1990
1991 Tue Jan 21 17:18:04 EET 2003  Pekka Riikonen <priikone@silcnet.org>
1992
1993         * Send DISCONNECT in close admin command in server.  Affected
1994           file silcd/command.c.
1995
1996         * Check whether we are already connecting to a remote router
1997           (in addition of checking whether we are already connected)
1998           before creating new connection.  Affected file silcd/server.c.
1999
2000 Thu Jan 16 18:47:00 EET 2003  Pekka Riikonen <priikone@silcnet.org>
2001
2002         * Added better compiler and compiler flags checking in
2003           configure.
2004
2005         * Check that socket is valid after QoS is applied to data.
2006           Affected file lib/silcutil/unix/silcunixsockconn.c.
2007
2008         * Make sure the socket connecetion is not closed to early
2009           when closing connection in server.  Also make sure the
2010           connection is always closed after error in a protocol.
2011           Affected file silcd/server.c.
2012
2013 Wed Jan 15 11:03:36 CET 2003  Pekka Riikonen <priikone@silcnet.org>
2014
2015         * Removed --session and --dummy options from Irssi SILC Client.
2016           -d option is available only if --enable-debug was given.
2017           Affected files are irssi/src/silc/core/silc-core,
2018           irssi/src/core/session.c and irssi/src/fe-text/silc.c.
2019
2020 Tue Jan 14 12:25:09 CET 2003  Pekka Riikonen <priikone@silcnet.org>
2021
2022         * Added silc_buffer_steal to steal the data from the buffer.
2023           Affected file lib/silcutil/silcbuffer.h.
2024
2025 Sat Jan 11 18:16:29 CET 2003  Giovanni Giacobbi <giovanni@giacobbi.net>
2026
2027         * Fixed server crash with double Primary block in config file.
2028
2029           Fixed also various memory leaks around the config file
2030           parser.  Affected files lib/silcutil/silcconfig.c,
2031           silcd/serverconfig.c.
2032
2033         * Changed my nickname (Johnny Mnemonic) to my real name, this
2034           means that bugs introduced by him were actually introduced
2035           by me!
2036
2037 Tue Jan  7 21:58:53 CET 2003  Jochen Eisinger <c0ffee@penguin-breeder.org>
2038
2039         * Don't display "foo appears as foo\nYou're now known as foo"
2040           messages.  Affected file irssi/src/silc/core/client_ops.c
2041
2042 Tue Jan  7 20:08:15 EET 2003  Pekka Riikonen <priikone@silcnet.org>
2043
2044         * Fixed error handling of invalid client entry when calling
2045           commands in server.  Fixes a crash.  Affected file
2046           silcd/command.c.
2047
2048 Thu Dec 26 14:19:29 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2049
2050         * Added some sanity checks in server for correctness of the
2051           server configuration.  Affected file silcd/serverconfig.c.
2052
2053 Fri Dec 20 10:47:59 CET 2002  Pekka Riikonen <priikone@silcnet.org>
2054
2055         * Prevent endless resolving of user informations in USERS
2056           command by checking the command reply status correctly.
2057           Affected file lib/silcclient/command_reply.c.
2058
2059 Tue Dec 17 10:05:00 CET 2002  Pekka Riikonen <priikone@silcnet.org>
2060
2061         * Fixed file writing on WIN32 to use O_BINARY flag.  Affected
2062           file is lib/silcutil/silcfileutil.c.  A patch by Matthew
2063           Aldous <Matthew@Aldous.com>.
2064
2065         * Added better implementation using CriticalSection of
2066           SilcMutex on WIN32.  A patch by Mikko Lähteenmäki
2067           <mikko.lahteenmaki@pikabaana.net>.
2068
2069         * Added some Winsock WIN32 compatiblity defines into
2070           includes/silcwin32.h.
2071
2072 Mon Dec 16 19:33:05 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2073
2074         * Fixed double free in async host lookup code.  Affected file
2075           lib/silcutil/silcsockconn.c.
2076
2077         * On backup router handle now the SERVER_SIGNOFF from router
2078           for local connected servers too, and close the connections.
2079
2080           Do not process them as normally signing off servers when they
2081           really signoff by sending EOF fe, but always assume that
2082           router sends the SERVER_SIGNOFF.
2083
2084           Affected files silcd/server.c and silcd/packet_receive.c.
2085
2086         * Fixed socket unsetting when closing connections.  Affected
2087           files silcd/server.c and silcd/packet_send.c.
2088
2089         * Do not print the nickname in SERVER_SIGNOFF if we do not
2090           have it.  Prevents asserts in Irssi core.  It is possible we
2091           don't have the nick if it was just being resolved when server
2092           signoff.  Affected file irssi/src/silc/core/client_ops.c.
2093
2094 Thu Dec 12 23:22:50 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2095
2096         * Fixed autonick crashbug in client library.  Affected file
2097           lib/silcclient/client.c.
2098
2099         * Fixed Unix implementation of SilcMutex to really assert if
2100           the mutex is locked/unlcoked already.  Affected file
2101           lib/silcutil/unix/silcunixmutex.c.
2102
2103         * Fixed locking in silc_schedule_uninit.  It didn't lock
2104           when dispatching timeout tasks.  Affected file is
2105           lib/silcutil/silcschedule.c.
2106
2107         * Changed Win32 implementation of SilcThread to use modern
2108           Win32 interface.  Affected file is
2109           lib/silcutil/win32/silcwin32thread.c  A patch by Mikko L.
2110
2111 Thu Dec 12 12:06:59 CET 2002 Jochen Eisinger <c0ffee@penguin-breeder.org>
2112
2113         * Don't print signed messages when sending failed.  Affected files
2114           irssi/src/silc/core/silc-[servers.c/commands.h]
2115
2116         * Send adquate signal when founding a channel by joing it.  Affect
2117           file irssi/src/silc/core/client_ops.c
2118
2119 Wed Dec 11 21:46:19 CET 2002 Jochen Eisinger <c0ffee@penguin-breeder.org>
2120
2121         * Fix theme abstracts parsing.  Affected files irssi/default.theme,
2122           irssi/src/fe-common/core/themes.c
2123
2124 Wed Dec 11 20:20:07 EET 2002 Pekka Riikonen <priikone@silcnet.org>
2125
2126         * Fixed close command to use the port correctly when closing
2127           server connections.  Affected file silcd/idlist.c.
2128
2129         * Check for NULL outbuf in silc_socket_write.  It is possible
2130           that it is NULL is some odd case.  Affected files are
2131           lib/silcutil/[unix/win32]/silc[unix/win32]sockconn.c.
2132
2133         * Do not call final protocol callback for backup router
2134           resuming protocol when closing connection.  It is closed
2135           by timeout in case of error.  Affected file silcd/server.c.
2136
2137         * Backup reconnect to router if backup resuming protocol
2138           failed.  Affected file silcd/server_backup.c.
2139
2140 Wed Dec 11 10:01:26 CET 2002 Pekka Riikonen <priikone@silcnet.org>
2141
2142         * Fixed double free in SKE library error hadling when signature
2143           error occurred.  Affected file lib/silcske/silcske.c.
2144
2145         * Save the fingerprint to new SilcClientEntry after changing
2146           nickname.  Affected file lib/silcclient/client_notify.c.
2147
2148         * Print SIGNOFF in Irssi SILC client only if the nickname is
2149           known.  Prevents asserts in Irssi core.  It is possible we
2150           don't have the nick if it was just being resolved when it
2151           quit.  Affected file irssi/src/silc/core/client_ops.c.
2152
2153 Tue Dec 10 21:47:56 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2154
2155         * Fixed double free in invite list adding code when adding
2156           invite strings.  Affected file silcd/server_util.c.
2157
2158 Fri Dec  6 17:40:24 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2159
2160         * More log printing during backup router protocol.  Affected
2161           file silcd/server_backup.c.
2162
2163         * Removed backwards support for old private key file format.
2164           Affected file lib/silccrypt/silcpkcs.c.
2165
2166         * Removed backwards support for not-so-strict decryption length
2167           check, it's strict now.  Affected lib/silccrypt/silccipher.c.
2168
2169         * GETKEY to update the client entrys fingerprint too.
2170           Affected file lib/silcclient/command_reply.c.
2171
2172         * Added --without-libtoolfix for package builders using weird
2173           wrappers around libtool (BSD at least).
2174
2175 Thu Dec  5 22:29:46 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2176
2177         * Fixed backup router bugs:  When backup resumes router and
2178           receives a CHANNEL_MESSAGE packet the backup must not act
2179           as router since the packet header decryption would be
2180           different.  Also, when relaying packets to channel, do
2181           not re-encrypt packets on backup that came from the primary
2182           since the connection isn't really router-router connection.
2183           Affected files silcd/server.c, silcd/packet_send.c.
2184
2185         * Added checks in encryption/decryption that encryption/decryption
2186           length sent as argument really is multiple by block size.  Helps
2187           catching really weird bugs like the above backup router bugs
2188           when packets are being decrypted in wrong way.  Affected files
2189           lib/silccore/silcpacket.c, and lib/silccrypt/silccipher.c.
2190
2191         * Fixed padding generation in private key file encryption.
2192           Affected file lib/silccrypt/silcpkcs.c.
2193
2194 Thu Dec  5 16:35:23 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2195
2196         * Added ignore_message_signatures setting which can be used
2197           to ignore signatures in messages.  Affected files are
2198           irssi/src/silc/core/client_ops.c, silc-core.c.
2199
2200         * Fixed the libtoolfix to use command line options instead of
2201           environment variables.  They didn't work as expected.  Now,
2202           the libtool is fully run-time configurable.
2203
2204 Wed Dec  4 21:08:52 CET 2002  Jochen Eisinger <c0ffee@penguin-breeder.org>
2205
2206         * Verify signature payload for signed messages. Affected files
2207           irssi/src/silc/core/client_ops.h, irssi/src/silc/core/silc-servers.c,
2208           irssi/src/silc/core/silc-core.h
2209
2210         * Display signature verification result in public and private
2211           messages using theme abstracts. See irssi/default.theme for
2212           examples on their usage. Affected files
2213           irssi/default.theme, irssi/src/fe-common/silc/fe-messages.h,
2214           irssi/src/fe-common/silc/module-formats.[ch],
2215           irssi/src/fe-common/silc/fe-common-silc.c,
2216           irssi/src/fe-common/silc/Makefile.am
2217           irssi/src/fe-common/core/fe-messages.[ch]
2218
2219         * Fixed bugs in Irssi's theme parsing. Affected files
2220           irssi/src/fe-common/core/themes.c
2221
2222 Wed Dec  4 18:29:13 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2223
2224         * Calculate the correct length for signed messages before
2225           encrypting, it must be multiple by block size.  Affected
2226           file lib/silccore/silcmessage.c.
2227
2228         * silc_message_signed_get_public_key returns now both
2229           decoded and encoded public key.  Affected files are
2230           lib/silccore/silcmessage.[ch].
2231
2232         * Added libtoolfix script that makes the libtool more generic
2233           and configurable in run-time.  Now we can specify in run-time
2234           if what kind of libraries we want to create, regardless of
2235           configuration.  SIMs are now creates even if --disable-shared
2236           was explicitly given.
2237
2238 Tue Dec  3 23:26:55 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2239
2240         * Fixed founder key sending in CMODE command in client.
2241           Affected file lib/silcclient/command.c.
2242
2243         * Fixed CUMODE founder authentication in server to not check
2244           for client's public key since it's not supposed to do that.
2245           Affected file silcd/command.c.
2246
2247 Tue Dec  3 12:02:41 CET 2002  Jochen Eisinger <c0ffee@penguin-breeder.org>
2248
2249         * Set realname and hostname in NICK_REC records. Affected file
2250           irssi/src/silc/core/silc-nicklist.c
2251
2252 Mon Dec  2 20:50:20 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2253
2254         * Remove 1.0 protocol backwards compat code from client
2255           library.
2256
2257         * Added more reliable check for whether nickname did change
2258           or not, or whether only Client ID changed in NICK_CHANGE
2259           notify.  Affected file lib/silcclient/client_notify.c.
2260           Fixes bug in '@' character handling in a nickname.
2261
2262         * Added support for automatically parsing signature from
2263           the message payload.  Added new function
2264           silc_message_get_signature to return the payload to
2265           application.  Affected files lib/silccore/silcmessage.[ch].
2266
2267         * Changed the private_message and channel_message client
2268           operations to deliver the SilcMessagePayload to the
2269           application too.  Application can use it fe. to get the
2270           signature from the message for verification.  Affected
2271           file lib/silcclient/silcclient.h, client_channel.c and
2272           client_prvmsg.c.
2273
2274         * Redefined the signed payload for message payloads.
2275           Updated protocol specs and implemented.
2276
2277 Mon Dec  2 16:28:29 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2278
2279         * Fixed wrong invite and ban list handling in server command
2280           reply.  Affected files are silcd/command_reply.c,
2281           silcd/server_util.[ch].
2282
2283 Sun Dec  1 20:48:17 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2284
2285         * Fixed CMODE setting in server when founder mode was set.
2286           Affected file silcd/command.c.  Bug #95.
2287
2288         * Added support to setting specific public key in CMODE in
2289           Irssi SILC client.  Affected file lib/silcclient/command.c.
2290
2291         * Added support to use specific public key in CUMODE in
2292           Irssi SILC Client.  Affected file lib/silcclient/command.c.
2293
2294         * Added support for inviting and banning by public key in
2295           Irssi SILC client.  Affected file lib/silcclient/command.c.
2296
2297         * Fixed fingerprint/babbleprint showing in invite and ban
2298           list command replys.  Affected file is
2299           irssi/src/silc/core/client_ops.c.
2300
2301 Sun Dec  1 16:32:03 CET 2002  Jochen Eisinger <c0ffee@penguin-breeder.org>
2302
2303         * Format CMODE +c and +h to display both the mode and the argument
2304
2305 Sun Dec  1 18:17:22 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2306
2307         * Added test vectors and test programs for SHA-1, MD5,
2308           HMAC-SHA1 and HMAC-MD5.  New tests are located in
2309           lib/silccrypt/tests/.  Fixed also argument decoding bug in
2310           MD5 implementation.  Affected file lib/silccrypt/md5.c.
2311
2312         * Changed the channel private key and private message key
2313           generation (with static keys) to use SHA1 instead of MD5,
2314           as SHA1 is the mandatory hash function in SILC.  Affected
2315           file lib/silcclient/client_[channel/prvmsg].c.
2316
2317         * Changed the private key file encryption to use SHA1 instead
2318           of MD5.  Added support for the old generation and added
2319           automatic change of the key (to be removed later).  Affected
2320           files lib/silccrypt/silcpkcs.c.
2321
2322 Sat Nov 30 19:07:52 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2323
2324         * Load only files with .pub suffix in PublicKeyDir.  Affected
2325           file silcd/serverconfig.c.
2326
2327 Sat Nov 30 14:29:34 CET 2002  Johnny Mnemonic <johnny@themnemonic.org>
2328
2329         * Extended the SILC_SERVER_LOG_ERROR macro to all available logging
2330           channels.  Affected files silcd/silcd.c, silcd/server.h.
2331
2332         * Added the config directive PublicKeyDir for the client block.
2333           Affected files doc/exampe_silcd.conf.in, silcd/serverconfig.[ch].
2334
2335 Sat Nov 30 09:30:55 CET 2002  Pekka Riikonen <priikone@silcnet.org>
2336
2337         * Merged Toni's irssi/silc.conf patch.
2338
2339         * ROBODoc cleanup patch to lib/silccrypt/silcpkcs.h by johnny.
2340
2341         * Max alloc tests in allocation routines.  Affected file
2342           lib/silcutil/silcmemory.c.
2343
2344 Fri Nov 29 23:44:29 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2345
2346         * Fixed a typo in resuming code that fixed detach/resume code
2347           in server.  Bug #93.  Affected file silcd/packet_receive.c.
2348
2349 Thu Nov 28 17:17:11 CET 2002  Jochen Eisinger <c0ffee@penguin-breeder.org>
2350
2351         * Do reverse lookups for server when /connecting. Affected files
2352           irssi/silc.conf, irssi/src/core/servers.c, irssi/src/core/network.c,
2353           irssi/src/core/net-nonblock.*
2354
2355 Thu Nov 28 16:19:18 CET 2002  Pekka Riikonen <priikone@silcnet.org>
2356
2357         * Added library versioning for shared libraries.  Affected
2358           files configure.in.pre and lib/Makefile.am.pre.
2359
2360 Wed Nov 27 21:51:52 CET 2002  Jochen Eisinger <c0ffee@penguin-breeder.org>
2361
2362         * Display INVITE and BAN lists as specified by SILC 1.2
2363
2364 Wed Nov 27 16:01:11 CET 2002  Pekka Riikonen <priikone@silcnet.org>
2365
2366         * Do not send invite list back unless asked (when sending
2367           no arguments) or when list was modified.  Affected file
2368           silcd/command.c.
2369
2370         * Remove client from invite list in KILLED notify and in
2371           KILL command.  Affected file silcd/command.c and
2372           silcd/server.[ch].
2373
2374         * Fixed bugs in invite list handling in INVITE command.
2375           Affected files silcd/command.c and silcd/server_util.c.
2376
2377         * Merged with Irssi 0.8.6.
2378
2379         * Fixed UTF-8 in Irssi SILC Client, setlocale was missing.
2380           Affected file irssi/src/fe-text/silc.c.
2381
2382 Mon Nov 25 18:21:43 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2383
2384         * The silc_argument_get_[first/next] now return the argument
2385           type to caller.  Added silc_argument_payload_encode_one.
2386
2387           Affected files are lib/silccore/silcargument.[ch].
2388
2389         * Added support for the SILC 1.2 INVITE command and new
2390           invite lists to server.  Affected files are silcd/command.c,
2391           silcd/server_util.[ch] and silcd/packet_[receive/send].[ch].
2392
2393         * Added support for the SILC 1.2 BAN command and new
2394           ban lists to server.  Affected files are silcd/command.c,
2395           silcd/server_util.[ch] and silcd/packet_[receive/send].[ch].
2396
2397         * Added support to client sending new INVITE command.  Affected
2398           file is lib/silcclient/command.c.
2399
2400         * Added support to client sending new BAN command.  Affected
2401           file is lib/silcclient/command.c.
2402
2403         * Added support for removing client from invite list when kicked
2404           from channel, as SILC 1.2 dictates.  Affected files are
2405           silcd/packet_receive.c and silcd/command.c.
2406
2407 Sun Nov 24 18:26:42 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2408
2409         * If iv argument to silc_cipher_[encrypt/decrypt] is NULL, use
2410           automatically the cipher's internal IV.  Affected files
2411           lib/silccrypt/silccipher.[ch].
2412
2413         * Assure the RESUME_CLIENT packet is not sent to twice to
2414           backup router if the detached client was originated from
2415           the backup.  Affected file silcd/server.c.  Bug #76.
2416
2417         * Changed silc_sim_symname to not allocate memory.  Affected
2418           file lib/silcsim/silcsimutil.c.
2419
2420         * Fixed memory leaks with SIMs in server.  Affected files
2421           silcd/serverconfig.c, silcd/server.c.
2422
2423         * Fixed channel key distribution after resuming detached
2424           client.  Affected files silcd/packet_receive.c.
2425
2426         * Fixed channel's global_user boolean checking after detaching.
2427           Check it after changing the owner of the client not before.
2428           Affected file silcd/packet_receive.c.
2429
2430         * Fixed few double frees from client library.  Fixes at least
2431           Bug #81, possibly others too.
2432
2433         * UTF-8 decode topics also in JOIN command reply and TOPIC_SET
2434           notifys in Irssi SILC Client.  Affected file is
2435           irssi/src/silc/core/client_ops.c.  Bug #82.
2436
2437         * Applied Ville Räsänen's manual page and --mandir bugfix
2438           patch.  Affected files are configure.in.pre and Makefile.am.pre.
2439           Bug #88.
2440
2441 Fri Nov 22 18:34:20 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2442
2443         * Added support to backup router protocol for backup to tell
2444           normal server that it cannot use the backup router as primary
2445           because the primary isn't really down.  Updated protocol
2446           specs.
2447
2448         * Added support for primary router to tell backup router that
2449           resuming is not possible because the backup really isn't primary
2450           in the cell.  For example if backup disconnected itself the
2451           resuming is not allowed since the primary really did not
2452           go down.  Updated protocol specs.
2453
2454         * Removed MARS from crypto library.
2455
2456         * Defined the CTR mode and Randomized CBC mode in SILC.  The
2457           CTR mode is RECOMMENDED now in specification.  Defined also
2458           Serpent cipher as optional cipher.  Updated the protocol specs.
2459
2460 Thu Nov 21 12:43:28 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2461
2462         * Added support for inviting/banning by IP/MASK, public key,
2463           and explicit Client ID.  Redefined the command and notify
2464           types to allow easier forwards support for other methods
2465           of inviting/banning.  Updated protocol specs.
2466
2467         * Remove the client from channel's invite lists if the client
2468           is kicked or killed.  Updated protocol specs.
2469
2470         * Unified the Channel Message Payload and Private Message
2471           into one Message Payload.  Updated protocol specs and
2472           implemented.
2473
2474 Tue Nov 19 22:30:56 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2475
2476         * Don't wait for EOF after socket error has occurred, but
2477           close the connection.  Affected file is silcd/server.c.
2478
2479 Mon Nov 18 18:58:26 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2480
2481         * Added support for setting FOUNDER mode on channel with
2482           specific public key which can be set with CMODE command.
2483           Updated protocol specs and implemented in client and server.
2484
2485         * Fixed the Irssi SILC client to correctly shutdown the client
2486           library to avoid memory leaks.  Affected files are
2487           irssi/src/silc/core/silc-core.c and silc-servers.c.
2488
2489         * Deprecated the No Reply flag in SKE protocol and introduced
2490           "IV Included" flag which can be used to indicate that the IV
2491           is included in the ciphertext.  This makes it possible to use
2492           SILC on unreliable transport, such as UDP which may cause
2493           packet reordering and losses.  Updated protocol specs, did
2494           not implement yet.
2495
2496 Sun Nov 17 15:50:57 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2497
2498         * Fixed the MPI implementation of silc_mp_sizeinbase to return
2499           < 32 bit values in correct size.  Affected file is
2500           lib/silcmath/mp_mpi.c.
2501
2502 Sat Nov 16 13:14:45 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2503
2504         * Fixed the KE Start Payload parsing to check that mandatory
2505           fields are present.  Affected file lib/silcske/payload.c.
2506
2507         * Fixed compilation warnigs in Irssi SILC Client.  Affected
2508           files are irssi/src/silc/core/silc-query.c. client_ops.c.
2509
2510 Thu Nov 14 19:33:28 CET 2002  Jochen Eisinger <c0ffee@penguin-breeder.org>
2511
2512         * Print "nick now appears as newnick" and update Irssi's nicklist
2513           when you change your nick to "nick". Closes #62
2514
2515         * Never format your own nick. Closes #63
2516
2517 Thu Nov 14 09:44:54 CET 2002  Jochen Eisinger <c0ffee@penguin-breeder.org>
2518
2519         * SILC_UMODE_GONE changes are now propagated correctly to the
2520           Irssi client. Closes #54
2521
2522 Tue Nov 12 19:42:18 CET 2002  Jochen Eisinger <c0ffee@penguin-breeder.org>
2523
2524         * Fixed example in /HELP KEY
2525
2526         * Added expando $j which expands to current SILC Client version
2527
2528 Tue Nov 12 19:46:39 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2529
2530         * Fixed public key decoding in crypto library.
2531
2532         * Added better error printing to SKE library.
2533
2534 Tue Nov 12 08:50:12 CET 2002  Pekka Riikonen <priikone@silcnet.org>
2535
2536         * Fixed NICK command to not crash if nickname was not sent.
2537
2538 Mon Nov 11 19:32:00 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2539
2540         * Added Encrypt-Then-MAC order to SILC packet MAC generation.
2541           Deprecated the old Encrypt-And-MAC order.  Updated protocol
2542           specs and implemented.
2543
2544         * Added Encrypt-Then-MAC order to Channel Message Payload MAC
2545           generation.  Updated specs and implemented.
2546
2547 Sun Nov 10 12:20:56 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2548
2549         * Added support for rekey before 2^32 sequence number wraps.
2550           Affected files in server and client library.
2551
2552         * Padding must be at least 8 bytes now.  Implemented and updated
2553           protocol specs.
2554
2555         * Compute maximum padding for authentication packets to make
2556           passphrase approximation attacks impossible.  Affected files
2557           in client library and in server.
2558
2559         * Fixed PING command sending in client library and handling in
2560           server.  The server ID must be ID Payload, not raw ID data.
2561           Affected files in server and client library.
2562
2563         * Defined that all public keys sent in commands and notify
2564           payloads are actually Public Key Payloads not raw public key
2565           data.  Updated protocol specs and implemented.
2566
2567         * Updated protocol version to 1.2.  Updated specs and code.
2568
2569         * Added ERR_UNSUPPORTED_PUBLIC_KEY and ERR_OPERATION_ALLOWED
2570           status types.  Updated specs and the code.
2571
2572         * Added support for normal client to kill its own entries from
2573           the network.  Updated protocol specs and the code.
2574
2575         * Defined the SILC_MESSAGE_FLAG_SIGNED.  Updated protocol specs
2576           and added initial implementation.
2577
2578         * Added MAC field to the Private Message Payload to protect
2579           against chosen ciphertext attacks.  Updated the protocol specs
2580           and implemented.
2581
2582         * Added idle and signon fields to the ATTRIBUTE_SERVICE
2583           attribute to indicate the user's current idle and signon time
2584           of a service.  Updated protocol specs and implemented.
2585
2586 Thu Nov  7 19:21:10 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2587
2588         * Added "do_not_bind" argument to silc_client_file_send what
2589           can be used to not bind locally but assume the file receiver
2590           provides the point of connect.  Usefull when sender is behind
2591           NAT device.  Affected file lib/silcclient/silcclient.h and
2592           client_ftp.c.
2593
2594         * Added -no-listener option to FILE SEND command in Irssi SILC
2595           client.  Affected file irssi/src/silc/core/silc-servers.c.
2596           Renamed FILE RECEIVE to FILE ACCEPT.
2597
2598         * Confirm passphrase for private key encryption in
2599           silc_create_key_pair and silc_change_private_key_passphrase.
2600           Affected files are lib/silcutil/silcapputil.c.
2601
2602 Thu Nov  7 10:05:28 CET 2002  Pekka Riikonen <priikone@silcnet.org>
2603
2604         * Move silc_client_packet_send back to internal, added
2605           silc_client_send_packet, a bit simpler function for application.
2606           Affected files lib/silcclient/silcclient.h, client.c and
2607           client_internal.h.
2608
2609         * Moved the SilcClientEntry, SilcChannelEntry and
2610           SilcServerEntry to silcclient.h to be public and documented
2611           them for application.  Affected files are
2612           lib/silcclient/silcclient.h and idlist.h.
2613
2614 Wed Nov  6 17:18:13 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2615
2616         * Fixed manual page installation patch by Ville Räsänen.
2617           USERS help page fix patch by Ville Räsänen
2618
2619         * Changed the silc_client_command_call interface to make
2620           the command call simpler for the application.  The library
2621           now handles the command line parsing, command finding and
2622           execution.  Application only needs to call the function
2623           with the command line.  Affected files are
2624           lib/silcclient/silcclient.h, command.[ch].
2625
2626         * Fixed silc_get_input to NULL-terminate the returned input.
2627           Affected file lib/silcutil/silcutil.c.
2628
2629         * Resolve the client's public key in JOIN command if the
2630           founder auth data is being requested but we don't know the
2631           client's public key.  Affected file silcd/command.c.
2632           Bug #53.
2633
2634 Mon Nov  4 16:02:59 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2635
2636         * Print notify for server opers when backup router comes
2637           online.  Affected file silcd/server.c.
2638
2639         * Fixed the INVITE command to send the invite list in
2640           command reply.  Affected file silcd/command_reply.c.
2641
2642         * Fixed MOTD command reply sending.  Affected file
2643           silcd/command.c.
2644
2645         * UTF-8 decode the topic in TOPIC command reply and LIST
2646           command reply in Irssi SILC client.  Affected file is
2647           irssi/src/silc/core/client_ops.c.
2648
2649 Sun Nov  3 17:59:15 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2650
2651         * Fixed the INVITE command to not crash Irssi SILC client
2652           when given without nickname argument.  AFfected file
2653           irssi/src/silc/core/client_ops.c.
2654
2655         * Fixed double free in WHOIS query on normal server when
2656           forwarding query to router.  Affected file is
2657           silcd/server_query.c.
2658
2659         * Fixed WATCH command reply handling on normal server which
2660           was missing altogether.  Affected file silcd/command_reply.c.
2661           Bug #44.
2662
2663 Sun Nov  3 00:42:05 EET 2002  Mika Boström <bostik@lut.fi>
2664
2665         * Added man-pages for silc(1), silcd(8) and silcd.conf(5).
2666           Included yodl sources for each of these. Also modified
2667           Makefile.am prototype to install these files to proper
2668           locations. Updated CREDITS. Affected file Makefile.am.pre,
2669           new files doc/*.yo, doc/silc.1, doc/silcd.conf.5,
2670           doc/silcd.8.
2671
2672 Sat Nov  2 21:26:56 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2673
2674         * Added support for encrypted private key files.  Now
2675           passphrase must be provided when new key pair is created
2676           (can be empty though), and prompted when loading the
2677           private key.  Added support for loading the old-style
2678           non-encrypted private keys as well.  Affected files
2679           lib/silccrypt/silcpkcs.[ch], Irssi SILC client and
2680           SILC Server.
2681
2682         * Fixed silc_get_input to accept input on all terminals.
2683           Affected file lib/silcutil/silcutil.c.
2684
2685         * Moved the Irssi SILC client key loading and other stuff
2686           to be called after the arguments and UI is initialized.
2687           Affected file irssi/src/silc/core/silc-core.c.  Bug #31.
2688
2689         * Added -P option to Irssi SILC client which can be used
2690           to change the passphrase of the private key.  Affected
2691           file irssi/src/silc/core/silc-core.c.
2692
2693         * Added silc_change_private_key_passphrase apputil routine
2694           to lib/silcutil/silcapputil.[ch].
2695
2696 Sat Nov  2 12:53:09 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2697
2698         * Fixed connection closing in client library to not crash.
2699           Moved the connection freeing totally to function
2700           silc_clinet_del_connection.  Affected file
2701           lib/silcclinet/client.c.
2702
2703 Fri Nov  1 18:57:02 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2704
2705         * Changed includes/silcincludes.h to silcincludes.h.in to
2706           include configuration specific information.  The silcdefs.h
2707           is not included in to installation anymore (it's only
2708           compilation time header).
2709
2710 Fri Nov  1 10:30:26 CET 2002  Pekka Riikonen <priikone@silcnet.org>
2711
2712         * Moved the SilcClient and SilcClientConnection from client.h
2713           to the public lib/silcclient/silcclient.h.  Changed the
2714           structures a bit.
2715
2716 Thu Oct 31 22:44:07 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2717
2718         * If version string in silc_clinet_alloc is NULL the library
2719           puts it automatically.  Affected file lib/silcclient/client.c.
2720
2721         * Changed the version strings from variables to #define's
2722           in includes/silcversion.h.
2723
2724 Wed Oct 30 16:17:30 CET 2002  Pekka Riikonen <priikone@silcnet.org>
2725
2726         * Added shared library complation support.
2727
2728 Tue Oct 29 21:48:55 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2729
2730         * Added lib/silcutil/silcapputil.[ch] for application
2731           utility functions.  It includes routines for applications'
2732           convenience.  Added silc_create_key_pair, silc_show_public_key
2733           and silc_load_key_pair functions.
2734
2735 Tue Oct 29 17:36:44 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2736
2737         * Send RESUME_CLIENT packet from router to backup routers
2738           to in resuming.  Affected file silcd/packet_receive.c.
2739
2740 Mon Oct 28 21:23:39 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2741
2742         * In IDENTIFY command parsing, send all other IDs except
2743           Client IDs explicitly to router for resolving on normal
2744           server.  Also check that ID received in WHOIS command is
2745           always Client ID, others are not allowed.  Affected file
2746           silcd/server_query.c.
2747
2748         * Merged latest changes from irssi.org CVS.
2749
2750 Sun Oct 27 11:44:32 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2751
2752         * Merged c0ffee's /set heartbeat patch to Irssi SILC client.
2753           Affected files irssi/src/silc/core/silc-core, silc-server.c.
2754
2755         * Fixed the heartbeat sending in Irssi SILC client.  Moved
2756           the silc_client_packet_send to silcclient.h for application
2757           usage.  Affected files lib/silcclient/client_internal.h
2758           lib/silcclient/silcclient.h.
2759
2760         * Fixed a bug in query resolving in server.  Used wrong
2761           variable in a for loop and crashed.  Affected file is
2762           silcd/server_query.c.
2763
2764         * Server constructs requested attributes only to locally
2765           connected clients.  Affected file silcd/server_query.c.
2766           Bug #36.
2767
2768         * Fixed a bug when sending resolving from router to server
2769           with requested attributes.  The constructed WHOIS command
2770           was incorrect.  Affected file silcd/server_query.c.
2771           Bug #38.
2772
2773         * Fixed Requested Attributes saving in WHOIS command reply.
2774           The length of the data buffer must be saved too.  Affected
2775           file silcd/command_reply.c.
2776
2777         * Update the client entry's servername after detaching is
2778           over.  Affected file silcd/packet_receive.c.  Bug #37.
2779
2780         * Resolve incomplete client entrys in CUMODE_CHANGE and
2781           CMODE_CHANGE notifys.  Affected file is
2782           lib/silcclient/client_notify.c.  Bug #42.
2783
2784 Thu Oct 24 12:22:35 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2785
2786         * Fixed channel key packet processing bug on backup router
2787           during backup resuming protocol.  Affected file is
2788           silcd/packet_receive.c.
2789
2790         * Fixed memory leaks in server.  Affected files are
2791           silcd/server.c and silcd/packet_receive.c.
2792
2793         * Fixed packet decryption problem when backup router encrypted
2794           channel message with wrong key during backup resuming
2795           protocol.  Affected file silcd/packet_send.c.
2796
2797         * ROBODoc documented lib/silccrypt/silccipher.h.  A patch by
2798           Toni Willberg (toniw@iki.fi)
2799
2800         * Changed the SilcCipher context to be private.  Changed the
2801           silc_cipher_get_iv to just return pointer to the IV.  Added
2802           silc_cipher_get_name to return the name of the cipher.
2803           Fixed code all around to support these changes.  Affected
2804           files are lib/silccrypt/silccipher.[ch], client library and
2805           server.
2806
2807 Wed Oct 23 19:01:41 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2808
2809         * Fixed unaligned access in lib/silccore/silcattrs.c.
2810
2811         * Fixed libtool linking in lib/silcsim/Makefile.am.
2812
2813         * Fixed services attribute printing.  Affected files is
2814           irssi/src/silc/core/silc-queries.c.
2815
2816 Wed Oct 23 09:51:04 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
2817
2818         * Fixed a crashbug in incoming server accepting.  Affected
2819           file silcd/server.c.
2820
2821 Tue Oct 22 13:02:32 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2822
2823         * Added automatically generated index to Toolkit Reference
2824           Manual.
2825
2826         * Added support for Postscript Toolkit Reference Manual.
2827
2828 Mon Oct 21 21:30:40 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
2829
2830         * Merged DISCONNECT fix, and autoconn port fix from Irssi
2831           CVS.
2832
2833 Sun Oct 20 19:54:55 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2834
2835         * Added 'send_events' boolean argument to the function
2836           silc_schedule_set_listen_fd which sends the set events to
2837           the application explicitly if set to TRUE.  Default action
2838           should be FALSE.  Affected file lib/silcutil/silcschedule.[ch],
2839           lib/silcclient/client_internal.h and silcd/server_internal.h.
2840
2841         * Added silc_compare_timeval to determine which time values
2842           is smaller.  Affected file lib/silcutil/silcutil.[ch].
2843
2844         * Added sort-of "Quality of Service" (QoS) support to
2845           SilcSocketConnection.  Data reception can be controlled with
2846           rate limit per second and/or read data length limit.
2847           Added silc_socket_set_qos.  Affected files are
2848           lib/silcutil/silcsockconn.[ch] and unix/silcunixsockconn.c.
2849
2850         * Added the QoS configuration to SILC Server configuration
2851           file.  Affected files are silcd/serverconfig.[ch] and
2852           server.c.
2853
2854 Sun Oct 20 14:12:24 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
2855
2856         * Merged with irssi.org CVS.
2857
2858         * Failed OPER and SILCOPER authentications are now logged.
2859           Affected file silcd/command.c.  Bugs #25.
2860
2861 Sat Oct 19 13:32:15 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
2862
2863         * ROBODoc documented lib/silcutil/silcbuffer.h and
2864           lib/silcutil/silcdlist.h.  Patch by Ville Räsänen
2865           <ville.rasanen@iki.fi>.
2866
2867 Fri Oct 18 10:51:04 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2868
2869         * Added support for auto-passphrase authentication from the
2870           config file during connecting which was not implemented
2871           yet.  Affected file irssi/src/silc/core/client_ops.c.
2872
2873         * Fixed a bug in authentication protocol failure handling which
2874           was processing wrong callback context.  Affected files
2875           are lib/silcclient/client.c and protocol.c.
2876
2877         * Fixed the /ATTR allow off to actually work.  Affected file
2878           is irssi/src/silc/core/silc-queries.c.
2879
2880         * Fixed the /ATTR -del to work.  Affected file is
2881           irssi/src/silc/core/silc-queries.c.
2882
2883 Thu Oct 17 23:45:12 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2884
2885         * Fixed string formatting crashbug in lib/silccore/silcattrs.c.
2886
2887         * Fixed mask attribute adding in Irssi SILC client.  Affected
2888           file irssi/src/silc/core/silc-queries.c.
2889
2890 Thu Oct 17 16:40:39 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2891
2892         * Added support for saving the requested attributes in
2893           WHOIS to directory.  Affected file is
2894           irssi/src/silc/core/silc-queries.c.
2895
2896 Wed Oct 16 17:40:56 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2897
2898         * Added support for parsing VCard fields that do not have
2899           the TYPE= for types.  Affected file lib/silcutil/silcvcard.c.
2900
2901         * Fixed a double free bug in hash table foreach function
2902           if the entry was deleted in the foreach callback.  Affected
2903           file lib/silcutil/silchashtable.c.
2904
2905 Tue Oct 15 18:05:24 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2906
2907         * Added silc_attribute_get_verify_data to return the signature
2908           verification data for either user digital signature or
2909           server digital signature in Requested Attributes.  Affected
2910           files are lib/silccore/silcattrs.[ch].
2911
2912         * Added silc_vcard_alloc which is used to allocated dynamic
2913           SilcVCard context.  The silc_vcard_free now checks whether
2914           the context is dynamically allocated or not.  Affected files
2915           are lib/silcutil/silcvcard.[ch].
2916
2917 Mon Oct 14 17:55:44 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2918
2919         * Periodically remove the NOATTR status from client entry
2920           so that the client may take the attributes in use even after
2921           server has resolved them unsuccessfully earlier.  Affected
2922           file silcd/server_query.c and idlist.h.
2923
2924         * Moved sha1hash and md5hash from client->internal to
2925           SilcClient for application usage.  Affected files are
2926           lib/silcclient/client.h and client_internal.h.
2927
2928         * Fixed attribute encoding and decoding bugs.  Affected
2929           files lib/silccore/silcattrs.[ch].
2930
2931         * Added ATTR command to Irssi SILC Client which is used to
2932           manage user's Requested Attributes sending and values for
2933           WHOIS command.  Affected files around Irssi SILC client.
2934
2935 Mon Oct 14 14:33:54 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2936
2937         * Added silc_buffer_strformat which can be used to format
2938           strings into a buffer which size is automatically increased.
2939           Affected file lib/silcutil/silcbuffmt.[ch].
2940
2941         * Added implementation of VCard (RFC 2426) which can be used
2942           as part of Requested Attributes in WHOIS command.  Affected
2943           file lib/silcutil/silcvcard.[ch].
2944
2945 Fri Oct 11 23:52:17 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2946
2947         * Some strncat -> silc_strncat changes our the core and
2948           client library.
2949
2950         * Added SILC_SKE_STATUS_SIGNATURE_ERROR and OUT_OF_MEMORY
2951           errors.  Added better error printing to SKE library.
2952           Affected files lib/silcske/silcske.c, silcske_status.h and
2953           payload.c.
2954
2955         * Save the PKCS key length even if only private key is set to
2956           SilcPKCS.  Affected file lib/silccrypt/silcpkcs.[ch] and rsa.c.
2957
2958         * Fixed the usage of silc_pkcs_get_key_len since it returns the
2959           length in bits not in bytes.  Affected files are
2960           lib/silcske/silcske.c, lib/silccore/silcauth.c and
2961           silcd/server_query.c.
2962
2963 Wed Oct  9 17:22:57 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2964
2965         * Added silc_attribute_payload_encode_data to directly encode
2966           the data into the attributes buffer.  Renamed function
2967           silc_attribute_payload_parse_list to silc_attribute_payload_parse.
2968           Affected files are lib/silccore/silcattrs.[ch].
2969
2970         * silc_hash_table_find_foreach calls the foreach function now
2971           once even if the nothing was found with context set to NULL.
2972           Affected file lib/silcutil/silchashtable.[ch].
2973
2974         * Remove the RESOLVING flag from client entry after received
2975           the Requested Attributes from the client.  Fixed memory leak
2976           in client entry freeing.  Affected files silcd/server_query.c
2977           and idlist.c.
2978
2979         * Added Requested Attributes support into SILC Client Library.
2980           It is not able to send requested attributes in WHOIS command,
2981           and also receive and process requested attributes.  Added
2982           silc_client_attribute_[add|del] and silc_client_attributes_get
2983           functions.  Added also `ignore_requested_attributes' to the
2984           SilcClientParams to not use attributes in client.  Affected
2985           files are lib/silcclient/command.c, client_attrs.[ch],
2986           silcclient.h, client_internal and client.[ch].
2987
2988         * Changed the silc_client_get_client_by_id to support Requested
2989           Attributes, it takes them as argument now.  Affected file
2990           is lib/silcclient/silcclient.h, and idlist.c.
2991
2992         * Added -details option to WHOIS command in Irssi SILC Client
2993           to support the requested attributes.  By default it requests
2994           all attributes.  Affected file lib/silcclient/command.c and
2995           irssi/doc/help/in/whois.in.
2996
2997 Tue Oct  8 17:58:28 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2998
2999         * Add also SERVICE attribute for server-constructed attribute
3000           data.  Also digitally sign the attributes and add
3001           SERVER_DIGITAL_SIGNATURE attribute.  Affected file is
3002           silcd/server_query.c.
3003
3004 Mon Oct  7 18:25:35 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3005
3006         * Changed the silc_attribute_payload_encode to support list
3007           of attributes (function may be called several times to add
3008           a new attribute).  Removed the silc_attribute_payload_encode_list
3009           function.  The encoding function now also automatically encodes
3010           the data, so the caller does not need to do that.  Affected
3011           files lib/silccore/silcattrs.[ch].
3012
3013         * Added support for replying on behalf of the user to the
3014           Requested Attributes in WHOIS command in the server.  Affected
3015           file silcd/server_query.c.
3016
3017         * SILC_NOT_IMPLEMENTED macro use SILC_LOG_INFO now instead of
3018           SILC_LOG_DEBUG.  Affected file lib/silcutil/silclog.h.
3019
3020 Sun Oct  6 16:48:32 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3021
3022         * Don't swtich to become primary router if we are backup if
3023           decryption error has occurred.  Affected file silcd/server.c.
3024
3025         * Fixed a bug in backup router IP address comparison in
3026           silc_server_backup_get.
3027
3028           Save now also the port of the server/router and use that
3029           in comparison as well.  Affected file silcd/server_backup.c.
3030
3031         * Normal server now reconnects to backup router automatically
3032           if connection is lost to it.  Affected file silcd/server.c.
3033
3034 Thu Sep 26 13:51:02 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
3035
3036         * If packet processing fails (like integrity check fails)
3037           the connection is closed now.  Affected files are
3038           lib/silccore/silcpacket.c and silcd/server.c.
3039
3040 Mon Sep 23 10:59:39 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
3041
3042         * Fixed double free in RSA public key set function
3043           silc_rsa_set_public_key.  Affected file lib/silccrypt/rsa.c.
3044           Bug #29.
3045
3046 Sun Sep 22 14:54:05 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3047
3048         * Rewrote WHOIS, WHOWAS and IDENTIFY commands in the server.
3049           Added server_query.[ch] which provides one interface for
3050           querying information using all three commands.
3051
3052         * Changed all "typedef unsigned char" in core library to
3053           "typedef SilcUInt8".
3054
3055 Sat Sep 21 21:36:45 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3056
3057         * Added silc_strncat into lib/silcutil/silcstrutil.[ch].
3058
3059         * Renamed silc_server_get_client_resolve to
3060           silc_server_query_resolve and moved to server_query.[ch].
3061
3062 Wed Sep 18 18:28:04 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3063
3064         * Resumed client packet handling from server put the resumed
3065           client on wrong list on router and caused the client not
3066           be present on the network anymore.  Now fixed to put the
3067           client to correct list.  Affected file silcd/packet_receive.c.
3068
3069 Wed Sep 18 15:13:48 CEST 2002  Johnny Mnemonic <johnny@themnemonic.org>
3070
3071         * Various cleanup in error message output in config parsing code
3072           and in server init code.  Fixed error log files containing
3073           too many newlines ('\n') in some situations.  Affected files are
3074           silcd/serverconfig.c, silcd/silcd.c, and silcd/server.c.
3075
3076 Wed Sep 18 10:51:23 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
3077
3078         * Use the reverse lookupped hostname in client internals
3079           instead of one user provided us as remote server name.
3080           Affected file lib/silcclient/client.c.
3081
3082 Mon Sep 16 12:02:54 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3083
3084         * Added 'app_context' to silc_schedule_init.  It is an
3085           application specific context that is delivered to application
3086           in task callback functions.  Affected files are
3087           lib/silcutil/silcutil.[ch].
3088
3089         * The hb_context in SilcSocketConnection is not freed
3090           automatically anymore (application must free it).  Freeing
3091           it automatic is inconsistent.  Affected files are
3092           lib/silcutil/silcsockconn.[ch].
3093
3094 Sun Sep 15 22:16:19 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3095
3096         * Added support for removing explicitly added client connections
3097           in rehash and closing the client connections if they were
3098           unconfigured in the rehash.  Affected file silcd/server.c.
3099
3100         * Added support for aborting automatically pending commands
3101           that never receives the reply (to avoid memory leaks).
3102           Added also silc_server_command_pending_timed to set the
3103           specific timeout for pending command.  Affected files are
3104           silcd/command[_reply].[ch].
3105
3106         * Added SILC_STATUS_ERR_TIMEDOUT status.  Updated protocol
3107           specs and lib/silccore/silcstatus.h.
3108
3109 Sun Sep 15 12:25:10 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3110
3111         * Changed the silc_get_time to accept time value as argument
3112           or if zero is sent return current local time.  Affected
3113           file lib/silcutil/silcutil.[ch].
3114
3115         * Added STATS command to client library and Irssi SILC client.
3116           Patch provided by Ville Räsänen <ville.rasanen@iki.fi>.
3117
3118 Wed Sep 11 09:22:00 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
3119
3120         * Assure that channel key is set before sending it.  May
3121           crash server otherwise.  Affected file silcd/packet_send.c.
3122
3123 Tue Sep 10 09:50:08 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
3124
3125         * Assure that endless loop cannot happen with detached client
3126           resolving on normal server.  Added idlist status
3127           SILC_IDLIST_STATUS_RESUME_RES.   Affected files are
3128           silcd/idlist.h and silcd/packet_receive.c.
3129
3130 Mon Sep  9 12:18:18 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
3131
3132         * Incoming file transfer request cannot use same session as
3133           the sending session.  This can happen when sending file to
3134           yourself.  Crashed the client on quit.  Affected file
3135           lib/silcclient/client_ftp.c.  Bug #24.
3136
3137 Sun Sep  8 18:39:25 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3138
3139         * Implemented the draft-riikonen-precense-attrs draft and
3140           the Attribute Payload into the lib/silccore/silcattrs.[ch].
3141
3142 Sun Sep  8 13:13:44 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3143
3144         * Distribute the SERVER_SIGNOFF notify also to local backup
3145           routers from the primary router.  The backup router may not
3146           have the signing of local server directly connected and need
3147           to know about the signoff.  Affected file silcd/server_util.c.
3148
3149         * Use the primary router as the origin of the locally connected
3150           server when it is disconnecting from the backup router since
3151           that's where it really is coming from.  Now the clients from
3152           the disconnecting server are removed correctly and "shadow"
3153           clients are not left to the backup router.  Affected file
3154           silcd/server.c.
3155
3156 Sat Sep  7 22:26:50 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3157
3158         * If normal server is standalone and found existing but disabled
3159           channel, do not re-create the channel since it creates
3160           duplicate same channels.  Affected file silcd/server.c.
3161
3162         * Added anonymous client connections support to server.  New
3163           "anonymous" configuration option to ConnectionParams section
3164           added.  If set to true, the username and hostname information
3165           of the client will be scrambled and anonymous user mode is
3166           set automatically to the user.  Affected files are
3167           silcd/serverconfig.[ch], silcd/packet_receive.c and server.c.
3168
3169 Sat Sep  7 16:02:09 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3170
3171         * In JOIN notify handling, mark that the cache entry of the
3172           client cannot be expired.  Can cause crashes on normal
3173           server (asserts client->channels).  Affected file is
3174           silcd/packet_receive.c.
3175
3176         * From now on distribution versions are used as protocol versions
3177           instead of by default using the Toolkit base version as protocol
3178           version.  Affected file prepare.
3179
3180         * Do not set the locally resolved hostname for local client
3181           entry but take what server sends.  This way the real hostname
3182           is showed in WHOIS for yourself.  Affected file is
3183           lib/silcclient/idlist.c and lib/silcclient/client.c.
3184
3185         * Resolve local info with IDENTIFY when connecting to server.y
3186
3187 Sat Sep  7 14:22:43 CEST 2002 Lubomir Sedlacik <salo@silcnet.org>
3188
3189         * Rewritten check for POSIX threads.  Use --with-pthreads[=DIR]
3190           for implied search (not needed on platforms which has native
3191           pthreads library).  Use --without-pthreads to disable threads.
3192           Affected file is configure.in.pre
3193
3194         * Fixed --with-iconv on platforms which need to bypass (broken)
3195           native iconv().  Affected file is configure.in.pre
3196
3197 Sat Sep  7 15:08:13 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3198
3199         * Moved -C option parsing in Irssi SILC client at same time
3200           as other options.  The UI was initialized earlier and caused
3201           problems on command line.  Bug #16.  Affected file is
3202           irssi/src/silc/core/silc-core.c.
3203
3204 Mon Sep  2 23:00:30 CEST 2002 Johnny Mnemonic <johnny@themnemonic.org>
3205
3206         * Added global variable silc_log_timestamp that tells silclog
3207           wether to print or not the timestamp in the logging files.
3208           Affected file lib/silcutil/silclog.[ch].
3209
3210         * Added silcd configuration option Timestamp in the Logging
3211           section.  Affected file silcd/serverconfig.[ch],
3212           doc/example_silcd.conf.in.
3213
3214 Fri Aug 30 08:57:33 CEST 2002 Pekka Riikonen <priikone@silcnet.org>
3215
3216         * Fixed fingerprint checking to check for entirely empty
3217           fingerprint instead of two first bytes when determining
3218           if it is set.  Bug #18.  Affected file silcd/command.c.
3219
3220         * Fixed duplicate PKCS name registering to not allow it.
3221           Bugs #17.  Affected file lib/silccrypt/silcpkcs.c.
3222
3223 Sun Aug 25 08:02:04 CEST 2002 Lubomir Sedlacik <salo@silcnet.org>
3224
3225         * Conditionalize non-gcc compiler optimizations for various
3226           platforms, enable those commented out.  Cleanups.
3227           Affected file lib/silcmath/mpi/configure.in
3228
3229 Sat Aug 24 15:11:32 EEST 2002 Timo Sirainen <tss@iki.fi>
3230
3231         * silc_rng_exec_command() left zombie processes if command
3232           didn't generate any output.  Affected file
3233           lib/silccrypt/silcrng.c
3234
3235 Fri Aug 23 22:05:44 CEST 2002 Lubomir Sedlacik <salo@silcnet.org>
3236
3237         * Rewrote iconv checking, introduce --with-iconv for systems
3238           which rely on libiconv.  Check if iconv() provided by libc
3239           is good enough, otherwise demand libiconv.  Affected file
3240           configure.in.pre
3241
3242 Fri Aug 23 07:10:52 CEST 2002 Lubomir Sedlacik <salo@silcnet.org>
3243
3244         * Search for ldopen() also in libc.  This enables SIM support
3245           on *BSD systems.  Based on patch from Alex Zepeda.  Affected
3246           file configure.in.pre
3247
3248 Sun Aug 18 04:44:30 CEST 2002 Lubomir Sedlacik <salo@silcnet.org>
3249
3250         * Don't call AM_CONDITIONAL conditonally for SILC_THREADS.
3251           This fixes prepare on *BSD systems.  Affected file
3252           configure.in.pre
3253
3254 Sun Aug  4 15:55:40 CEST 2002 Pekka Riikonen <priikone@silcnet.org>
3255
3256         * More fixed for not having purge timeout for global clients
3257           that are on channel.  Affected files silcd/command_reply.c
3258           and server_util.c.
3259
3260         * Fixed the rekey protocol to work with backup router connections.
3261           Rekey packets are now allowed on disabled connections as
3262           well.  Affected files silcd/packet_send.c and server.c.
3263
3264         * Do not switch to be as backup router when shutting down and
3265           closing the primary connection.  Affected file silcd/server.c.
3266
3267         * Fixed memory leaks in backup router deleting.  Added
3268           silc_server_backup_free to free all data during shutdown of
3269           server.  Affected files silcd/server_backup.[ch].
3270
3271 Sun Jul 14 21:33:32 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3272
3273         * Do not process commands if the sock->user_data is NULL.
3274           Affected file silcd/command.c.
3275
3276 Tue Jul  9 19:03:11 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3277
3278         * Fixed buffer overflow and security problems (loosing bits
3279           in CFB encryption) in SILC RNG.  Problems reported by
3280           Markku-Juhani O. Saarinen <mjos@saturn.tcs.hut.fi>.
3281
3282 Sun Jul  7 13:10:01 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3283
3284         * Added yet more checks that client is not expired on global
3285           list if it is on channels.  Affected file is
3286           silcd/command_reply.c.
3287
3288 Sat Jul  6 11:45:11 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3289
3290         * Merged c0ffee's MIME signal patch which adds support for
3291           sending also MIME messages in Irssi SILC Client, and handling
3292           received MIME messages in a signal (and perhaps doing something
3293           to non-textual MIME messages).
3294
3295 Sun Jun 30 01:30:22 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3296
3297         * Fixed pending command deletion in server and client library
3298           to check the whole list instead of breaking after first found.
3299           The affected files are silcd/command.[ch] and
3300           lib/silcclient/command.[ch].
3301
3302 Sat Jun 29 17:40:12 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3303
3304         * Return NO_SUCH_CHANNEL error in USERS for channel that is
3305           secret or private, otherwise it's possible to find out
3306           whether a secret channel exists or not.  Affected file
3307           silcd/command.c.
3308
3309         * If CMODE change fails during the mode setting, assure that
3310           the old mode mask is set for the channel back.  Affected
3311           file silcd/command.c.
3312
3313         * Fixed passphrase saving on +a channel on normal server
3314           after successful JOIN command.  Affected file silcd/command.c.
3315
3316 Fri Jun 28 11:53:25 CEST 2002 Pekka Riikonen <priikone@silcnet.org>
3317
3318         * Remove server/router operator privileges in DETACH command,
3319           since it's possible to resume to server where these
3320           privileges would not be allowed for the client.  Affected
3321           file silcd/command.c.
3322
3323         * Do not set to wait for backup in rehash of the server.
3324           Affected file silcd/server.c.
3325
3326         * Do not check listener sockets when counting how many
3327           socket connections we have.  Affected file is
3328           silcd/server_util.c.
3329
3330         * Do not announce disconnected clients that are remaining
3331           in history (for WHOWAS).  This is because SIGNOFF notify
3332           for these has been sent earlier already.  Affected file
3333           silcd/server.c.
3334
3335 Thu Jun 27 20:07:27 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3336
3337         * Buffer overflow with CUMODE command's mode->mode character
3338           conversion.  Reported by Ville Räsänen.  Affected file
3339           lib/silcutil/silcutil.c.
3340
3341 Thu Jun 27 16:54:33 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3342
3343         * Allow heartbeat packets to go disabled connections anyway.
3344           Affected files silcd/server.c and silcd/packet_send.c.
3345
3346         * Do not broadcast New Channel packets with List flag set
3347           in the packet to backup routers.  The router must check
3348           for the correctness of the packets before sending them.
3349           It is possible that router will have enforce Channel ID
3350           change and this would cause desync in the backup router.
3351           Affected file silcd/packet_receive.c.
3352
3353         * Remove SILC_PACKET_FLAG_LIST from the temp packets that
3354           are handled in list parsing.  They are not list packets
3355           anymore.  Affected file silcd/packet_receive.c.
3356
3357 Thu Jun 27 11:27:07 CEST 2002 Pekka Riikonen <priikone@silcnet.org>
3358
3359         * Stop waiting for backup router through the timeout, not
3360           directly after backup router has arrived.  Affected file
3361           silcd/server.c.
3362
3363         * Do not re-create channel keys and send them when removing
3364           clients in server shutdown.  Affected files are
3365           silcd/server_internal.h and silcd/server_util.c.
3366
3367         * Notify distribution to backup routers was missing from
3368           the silc_server_send_notify_dest function which caused
3369           desyncing problems with backup router.  Affected file is
3370           silcd/packet_send.c.
3371
3372         * The client's channel removing was working wrong on
3373           backup router.  It assumed that it doesn't know global
3374           information but backup router does know.  For this reason
3375           it could remove channel when it wasn't supposed to do that.
3376           Affected file silcd/server.c and silcd/server_util.c.
3377
3378 Wed Jun 26 15:14:12 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3379
3380         * Stop for a couple seconds after badkup router has become
3381           primary router.  Affected file silcd/server.c.
3382
3383         * Added silc_server_remove_servers_by_server, which is used
3384           to remove servers originated from some other server.  Also
3385           clients of those servers can be removed too.  Affected file
3386           silcd/server_util.[ch].
3387
3388         * When removing clients after a server has signed of remove
3389           also all servers behind that server (unless they are known
3390           to be available locally), and send SERVER_SIGNOFF for each
3391           of the server separately.  Also the signed off clients are
3392           sent now separately per signed off server.  The affected files
3393           are silcd/server.c and silcd/server_util.[ch].
3394
3395         * All servers added with silc_idlist_add_server must always
3396           have both "router" and "connection" pointers set.  Otherwise,
3397           bad server entries may be left around in the cache.
3398           Affected file silcd/command_reply.c.
3399
3400         * Do not create the channel key in NEW_CHANNEL packet
3401           processing if the channel is empty.  Affected file
3402           silcd/packet_receive.c.
3403
3404         * Completed backup router support for standalone routers.
3405           Supports also servers in the cell that do not use the backup
3406           at all.
3407
3408 Wed Jun 26 10:38:11 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3409
3410         * Fixed a bug in silc_string_regexify which did not add '^'
3411           at the start of each string, and thus the matching was
3412           not explicit.  For example ban list iikone@*!*@* would
3413           match also "priikone", which is wrong, it would have to be
3414           *iikone@*!*@* to match also "priikone".  Affected
3415           file lib/silcutil/unix/silcunixutil.c.
3416
3417 Tue Jun 25 18:47:39 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3418
3419         * Enable all local server connections before updating client
3420           caches when we've become backup router.  Otherwise, signoff
3421           packets may not reach the clients.  Affected files are
3422           silcd/server.c and silcd/server_util.[ch].
3423
3424         * Fixed a bug in version string parsing which could crash
3425           the program with specially formatted version string.
3426           Bug reported and patch provided by Ville Räsänen.  Affected
3427           file lib/silcutil/silcutil.c.
3428
3429         * Handle the disconnection immediately when DISCONNECT
3430           packet is received in server.  Affected file silcd/server.c.
3431
3432         * Primary router now waits a short time (10 seconds) for
3433           backup router connection before accepting any other
3434           connection (except local).  Affected file silcd/server.c,
3435           serverconfig.[ch].
3436
3437         * Fixed a crash in client libary in NICK_CHANGE notify when
3438           NICK_CHANGE arrived for client entry we are resolving
3439           currently.  Affected file lib/silcclient/client_notify.c.
3440
3441         * Call the sconn->callback completion even if error had
3442           occurred.  Start reconnecting always if connection to
3443           primary router fails during backup router protocol.
3444           Affected files silcd/server.c and server_backup.c.
3445
3446 Mon Jun 24 17:47:52 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3447
3448         * Added functions silc_server_send_opers and
3449           silc_server_send_opers_notify to send packets stricly
3450           to operators.  Added macro SILC_SERVER_SEND_OPERS macro
3451           to send variable argument notify to operators.
3452           Affected files silcd/packet_send.[ch] and silcd/server.h.
3453
3454         * Removed UMODE rights checking with UMODE_CHANGE notify.
3455           Affected file silcd/packet_receive.c.
3456
3457         * Server/router operator now receives notify when network
3458           switches to backup router and when it resumes the use of
3459           primary router.  Affected file silcd/server.c and
3460           silcd/server_backup.c.
3461
3462         * Fixed the updating of client information after backup
3463           resuming protocol is over; update all except local clients
3464           to the new primary router.  The affected file is
3465           silcd/server_util.c.
3466
3467         * Added support for closing active connections in rehash
3468           that were unconfigured by the user.  Supports currently
3469           closing server and router connections.  Affected file
3470           silcd/server.c.
3471
3472         * Rewrote some SILC_LOG_DEBUG's in silcd/server_backup.c.
3473
3474 Sun Jun 23 17:32:31 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3475
3476         * Don't do SILC_STRING_LANGUAGE encoding if the outbuffer
3477           is NULL since seems that on some platforms NULL is allowed
3478           and on some it's not.  Fallback encoding is used instead.
3479           Affected file lib/silcutil/silcstrutil.c.
3480
3481         * Fixed statistics updating for incoming server connection
3482           which could cause problems when re-connecting.  Affected
3483           file silcd/server.c.
3484
3485         * Preliminary backup router support for standalone router
3486           added.  Affected files in silcd/.
3487
3488         * Mark server connections in backup router disabled before
3489           and after backup protocol.  Affected file is
3490           silcd/server_backup.c.
3491
3492         * Added support for reconnecting to remote server connection
3493           even if the protocol fails, and if the configuration wants
3494           us to keep trying to connect anyway.
3495
3496           Server connection is not allowed to backup router if
3497           backup router does not have connection to primary router yet.
3498
3499           Affected file is silcd/server.c.
3500
3501 Sat Jun 22 21:34:59 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3502
3503         * Added silc_client_udpate_server function to update changed
3504           server info.  Affected file lib/silcclient/idlist.[ch].
3505
3506         * Added check for server entries that are being resolved when
3507           notify is received.  If being resolved, handle the received
3508           notify only after it's resolved so that all notifys are
3509           handled in same order as received from the server.
3510
3511           Added similar resolver check to channel entries.  Every
3512           notify that cause resolving of any information that affects
3513           channel entry marks the channel entry in waiting state.
3514           After whatever resolving is over the waiters are signalled
3515           and only then the notifys are handled in the same order
3516           as delivered from the server.
3517
3518           Affected files are lib/silcclient/idlist.[ch], and
3519           client_notify.c.
3520
3521         * Fixed KILLED notify handling in normal server.  Affected
3522           file silcd/packet_receive.c.
3523
3524         * Added SILC_IDLIST_STATUS_LOCAL which indicates that entry
3525           is locally connected, or was locally connected (but may
3526           be detached and connection is not active).  Added also
3527           SILC_IS_LOCAL for checking this status.  Affected files
3528           silcd/idlist.h, silcd/packet_receive.c, silcd/server_util.c,
3529           silcd/server.c and silcd/server_internal.h.
3530
3531 Sat Jun 22 17:06:58 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3532
3533         * Don't send or handle TOPIC_SET if topic is already set and
3534           is same as being set.  Affected files silcd/command.c and
3535           silcd/packet_receive.c.
3536
3537         * Fixed CMODE change rights checking to work correctly when
3538           removing modes by operator.  Affected file is
3539           silcd/server_util.c.
3540
3541         * Fixed some handling with New Channel packet in router and
3542           fixed some CMODE_CHANGE notify handling in server and router.
3543           Affected file is silcd/packet_receive.c.
3544
3545         * Changed "disconnect" client operation to include the
3546           reason of the disconnection and optional disconnection
3547           message.  Affected file lib/silcclient/silcclient.h.
3548
3549         * Made the compilation of lib/contrib/ stuff conditional.
3550           Affected files configure.in.pre, lib/contrib/Makefile.am.
3551
3552 Sat Jun 22 12:49:21 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3553
3554         * All CMODE_CHANGE and CUMODE_CHANGE notifys are now sent back
3555           to the sender of the notify too, to avoid situation where two
3556           notifys are in the network at the same time going to oppsite
3557           directions.  Affected file silcd/packet_receice.c.
3558
3559 Fri Jun 21 10:00:32 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3560
3561         * Delete the client from channel even if the cilent->id is
3562           NULL.  It was possible that client was deleted without
3563           removing from channels (theoretically at least).  Affected
3564           file silcd/server.c and silcd/server_util.c.
3565
3566         * Free the client data too when resuming is not successful.
3567           Affected file silcd/packet_receive.c.
3568
3569         * Merged some code from c0ffee's silc-plugin.  Affected files
3570           irssi/src/silc/core/silc-channels.c and silc-expandos.c.
3571
3572         * Added SILC_PRIMARY_ROUTE and SILC_BROADXAST macros to
3573           silcd/server_internal.h.  SILC_PRIMARY_ROUTE Returns pointer
3574           to the primary router connection, the other one returns
3575           TRUE if packet must be broadcasted to network.
3576
3577         * All notifys that are destined to primary router (to network)
3578           are now automatically sent to backup routers even if the
3579           router is standalone (and has backup router).  Affected files
3580           in silcd/.
3581
3582         * Added --without-irssi and --without-silcd configuration
3583           options for disabling the compilation of these applications.
3584           Affected file configure.in.pre and prepare.
3585
3586 Thu Jun 20 13:48:15 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3587
3588         * Implemented SILC_STRING_BMP and SILC_STRING_UNIVERSAL for
3589           UTF-8 encoding and decoding.  Added also new encodings
3590           SILC_STRING_BMP_LSB and SILC_STRING_UNIVERSAL_LSB.
3591
3592           Added also SILC_STRING_LANGUAGE which is language and charset
3593           specific encoder and decoer for those platforms that support
3594           iconv().  It can convert the UTF-8 to and from the locale
3595           specific character set.
3596
3597           Affected file lib/silcutil/silcstrutil.[ch].
3598
3599         * Added macro SILC_NOT_IMPLEMENTED to lib/silcutil/silclog.h.
3600
3601         * Added function silc_get_command_name to the file
3602           lib/silcutil/silcutil.[ch].
3603
3604         * Improved the server debug output a bit.  Affected files are
3605           in silcd/.
3606
3607 Wed Jun 19 17:46:31 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3608
3609         * Save the channel passphrase when received succesful JOIN
3610           command reply from router, on normal server.  Otherwise
3611           joinig +a channels from normal server is not possible.
3612           Affected file silcd/command.c.
3613
3614         * Fixed a bug in TOPIC_SET notify handling.  The notifier
3615           may be other than client too, like server or channel.
3616           It expected it to always be only client and ignored the
3617           notify.  Affected file silcd/packet_recieve.c.
3618
3619         * Removed some (unnecessary) debug printing from
3620           lib/silccore/silcid.c and lib/silccore/silcargument.c.
3621
3622         * Do not force CMODE_CHANGE when server is announcing new
3623           channel.
3624
3625           Router announces stuff only after server reannounces channel
3626           after CHANNEL_CHANGE notify.
3627
3628           These fixes optimizes the announcing procedure, and perhaps
3629           fixes some problems too.  Affected file silcd/packet_receive.c.
3630
3631         * Fixed SERVER_SIGNOFF sending to local clients.  It was
3632           totally broken and sent the notify to all local clients,
3633           instead of only to those that was on same channel as the
3634           signing off clients.  Affected file silcd/server_util.c.
3635
3636         * Added -D option to server.  It can be used to give debug
3637           level.  The levels are from 0 - 99, and are predefined for
3638           smooth server debugging.  (see silcd.c for the predefined
3639           levels).  Affected file silcd/server.c.
3640
3641 Wed Jun 19 16:01:51 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3642
3643         * Fixed a bug in Irssi SILC client to close the connection
3644           properly when disconnecting from server.  Affected file
3645           irssi/src/silc/core/client_ops.c.
3646
3647 Tue Jun 18 17:14:52 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3648
3649         * When authenticating as founder during JOIN command, check
3650           that the one authenticating becomes the only founder on the
3651           channel.  Affected file silcd/command.c.
3652
3653         * Better checking for founder mode setting when CUMODE_CHANGE
3654           notify is received.  Affected file silcd/packet_receive.c.
3655
3656         * Close all connections when shutting down the server by sending
3657           DISCONNECT packet.  Close all listeners too when shutting
3658           down the server.  Affected file silcd/server.c.
3659
3660         * Handle DISCONNECT packet correctly in client library by
3661           calling the "disconnect" client operation.  Affected file
3662           lib/silcclient/client.c.
3663
3664         * Handle local errors correctly during resuming.  Affected
3665           file lib/silcclient/client.c.
3666
3667 Tue Jun 18 10:26:27 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3668
3669         * The log file is not dupped internally anymore in
3670           lib/silcutil/silclog.c.  Fixed memory leaks too.
3671
3672         * The scheduler now dispatches all pending timeout tasks
3673           when it is uninitialized with silc_schedule_uninit.
3674           Affected file lib/silcutil/silcschedule.c.
3675
3676 Mon Jun 17 21:30:55 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3677
3678         * Added --enable-stack-trace option to configure.  Added
3679           memory allocation stack trace support.  Added files
3680           lib/silcutil/stacktrace.[ch].  Affected files are
3681           lib/silcutil/silcmemory.[ch].
3682
3683         * Fixed memory leaks from libraries and server.  Affected
3684           files around the tree.
3685
3686         * Reverted back a fix made to CUMODE which broke it.
3687           Affected file silcd/command.c.
3688
3689 Sun Jun 16 11:49:45 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3690
3691         * Added SILC_MESSAGE_FLAG_UTF8 to the protocol specs and the
3692           core library, and implemented it.  All textual messages SHOULD
3693           use this flag and the message MUST be UTF-8 encoded.
3694           All text messages sent by Irssi SILC client are now UTF-8
3695           encoded (regardless whether the terminal supports UTF-8 or not).
3696           Affected files are lib/silccore/silcchannel.h,
3697           irssi/src/silc/core/silc-servers.c, silc-channels.c and
3698           client_ops.c.
3699
3700 Sat Jun 15 18:23:39 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3701
3702         * Added lots of new statistics updating that was missing from
3703           the server and router code.  Affected files in silcd/.
3704
3705         * Sending SIGUSR1 signal to server now dumps the current
3706           server statistics into /tmp directory.  Affected file is
3707           silcd/silcd.c.
3708
3709         * ROBODoc documented the lib/silccrypt/silchash.h.  Improved
3710           the SILC Hash Interface also.  Added new functions
3711           silc_hash_get_name, silc_hash_init, silc_hash_update and
3712           silc_hash_final.  Affected file lib/silccrypt/silchash.c.
3713
3714 Sat Jun 15 12:09:14 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3715
3716         * Added some better info printing for client during connecting.
3717           Affected file silcd/server_util.c.
3718
3719         * Implemented the SILC_CHANNEL_UMODE_QUIET mode that can be used
3720           to silence a user on a channel.  Affected files are
3721           lib/silcclient/client_channel.c, irssi/src/silc/core/client_ops.c,
3722           irssi/src/fe-common/silc/module-formats.[ch], silcd/command.c
3723           and silcd/packet_receive.c.
3724
3725         * Fixed a fatal bug in handling of malformed command payload.
3726           Affected file silcd/command.c.
3727
3728         * Fixed a double free when announcing channel users to router.
3729           Affected file silcd/server.c.
3730
3731         * After successful authentication to channel founder mode, check
3732           that there isn't anyone else with founder mode on the channel.
3733           The one that authenticated will become founder and anyone
3734           else is demoted.  Affected file silcd/command.c.
3735
3736         * Added error printing of any error that has occurred during
3737           any command in client library.  Affected file is
3738           irssi/src/silc/core/client_ops.c.
3739
3740         * Removed some error printing from the client library and left
3741           it for the application to worry (from the error status it
3742           receives in 'command' client operation.  Affected file is
3743           lib/silcclient/command.c.
3744
3745 Fri Jun 14 22:59:02 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3746
3747         * Added new status types KEY_AGREEMENT_ALREADY_STARTED and
3748           KEY_AGREEMENT_SELF_DENIED to lib/silcclient/silcclient.h.
3749           Starting key agreement with itself is denied.  Affected file
3750           is lib/silcclient/client_keyagr.c.
3751
3752         * Fixed some error checkings from the SFTP library which caused
3753           misbehaviour.  Affected files are lib/silcsftp/sftp_client.c
3754           and lib/silcsftp/sftp_util.c.
3755
3756         * Added new "debug" and "debug_string" settings to Irssi SILC
3757           client which can be used to print runtime debugging on the
3758           Irssi's screen.  Available when compiled with --enable-debug
3759           option.  Affected file irssi/src/silc/core/silc-core.c.
3760
3761 Tue Jun 11 16:36:02 CEST 2002 Johnny Mnemonic <johnny@themnemonic.org>
3762
3763         * Fixed a missing variadic parameter in a function call that
3764           caused server crash when a non-allowed connection arrived.
3765           Reported by Richard Becker.  Affected file silcd/server.c.
3766
3767 Mon Jun 10 16:29:42 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3768
3769         * Added WATCH list sending to backup routers from router.
3770           The WATCH command is sent by the router to the backup
3771           router.  Affected file silcd/command.c.
3772
3773         * Mark the backup_router flag for RouterConnection entry
3774           if the backup router stuff is defined in the config file.
3775           Affected file silcd/serverconfig.c.
3776
3777         * Fixed some backup data sending around the code to work better
3778           if the router is standalone router.  Not all places were fixed.
3779           Affected file silcd/packet_receive.c, silcd/packet_send.c,
3780           silcd/server.c.
3781
3782         * Fixed the router connecting when connecting to multiple
3783           routers.  It ignored every other router except the first
3784           one.  Affected file silcd/server.c.
3785
3786 Mon Jun 10 09:28:21 CEST 2002 Pekka Riikonen <priikone@silcnet.org>
3787
3788         * Made the private key generation after expiration optional.
3789           If not created after expiration the old key will re-expire
3790           at a later time (and thus key pair is not necessary to
3791           change).  Affected file irssi/src/silc/core/clientutil.c.
3792
3793 Sun Jun  9 18:58:25 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3794
3795         * The length arguments in bind() and connect() were wrong
3796           and fixed now to used SIZEOF_SOCKADDR in the
3797           lib/silcutil/unix/silcunixutil.c.
3798
3799 Tue Jun  4 18:36:05 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3800
3801         * Fixed detach timeout handling to use Client ID and not
3802           the actual client entry which may be freed in the callback.
3803           Affected file silcd/command.c.
3804
3805 Thu May 30 15:53:45 CEST 2002 Pekka Riikonen <priikone@silcnet.org>
3806
3807         * Merged c0ffee's multiple interface support patch.
3808           Affected files in silcd/.
3809
3810 Wed May 29 18:08:15 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3811
3812         * Cleanup keys properly.  Affected file is
3813           irssi/src/silc/core/clientutil.c.
3814
3815 Tue May 28 20:11:41 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3816
3817         * Display the user mode on the status bar.  Affected file
3818           irssi/src/silc/core/silc-expandos.c.
3819
3820 Tue May 28 13:56:26 CEST 2002 Pekka Riikonen <priikone@silcnet.org>
3821
3822         * If private message key is not set, but the flag is set in
3823           the packet, ignore the packet since it cannot be decrypted.
3824           Affected file lib/silcclient/client_prvmsg.c.
3825
3826 Thu May 23 12:00:14 CEST 2002 Pekka Riikonen <priikone@silcnet.org>
3827
3828         * When resuming client, remove the old client entry from
3829           the watcher list too.  Affected file silcd/packet_receive.c.
3830
3831         * Do not allow normal server to force founder mode away
3832           from router if the founder mode is already set.  Affected
3833           file silcd/packet_receive.c.
3834
3835         * Remove the client entry with watch notify types with short
3836           timeout, and not directly, so that other notifys can be
3837           retrieved too.  Affected file lib/silcclient/client_notify.c.
3838
3839         * Display notification about data messages that cannot be
3840           displayed.  Affected files irssi/src/silc/core/client_ops.c,
3841           irssi/src/fe-common/silc/module-formats.[ch].
3842
3843 Sun May 19 18:59:00 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3844
3845         * Fixed the CHANNEL_CHANGE notify handling in client libary
3846           to not use freed memory.  Affected file is
3847           lib/silcclient/client_notify.c.
3848
3849         * Fixed CUMODE_CHANGE notify handling in server.  Affected
3850           file silcd/packet_receive.c.
3851
3852         * Fixed USERS command to support empty channels.  Affected
3853           file silcd/command.c.
3854
3855 Sat May 18 11:35:19 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3856
3857         * Allow multiple identical pending commands to be registered
3858           in client library.  Affected file is lib/silcclient/command.c.
3859
3860         * Call the completion for resolving client information only
3861           after all resolvers has finished.  This fixes a crash in
3862           the client.  Added support for checking when the resolvers
3863           are finished.  Affected file is lib/silcclient/idlist.c.
3864
3865         * Wait by default 3 seconds before reconnecting to the server
3866           after being disconnected.  Makes the /detach command a bit
3867           more usable.
3868
3869 Fri May 17 17:23:45 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3870
3871         * Check the watcher list before sending signoff notifys
3872           when closing client connection.  Affected file is
3873           silcd/server.c.
3874
3875         * Added better CMODE command rights checking.  Affected file
3876           silcd/server_util.c.
3877
3878 Fri May 17 08:33:41 CEST 2002 Pekka Riikonen <priikone@silcnet.org>
3879
3880         * Fixed watcher list checking during server signoff.  It
3881           crashed the server.  Affected file silcd/server_util.c.
3882
3883         * The JOIN command reply returns now the founder's public
3884           key.  Affected file is silcd/command.c.
3885
3886         * Announce the channel mode, and the mode properties with
3887           CMODE_CHANGE notify.  Affected file silcd/server.c.
3888
3889         * Mark new channels by default disabled, untill at least
3890           one user joins the channel.  Affected file is
3891           silcd/packet_receive.c.
3892
3893 Thu May 16 13:05:13 CEST 2002 Pekka Riikonen <priikone@silcnet.org>
3894
3895         * The nickname argument to watch notify can be optional.
3896           Fixes a crash in server.  Affected file silcd/packet_send.c.
3897
3898         * Remove the client entry from cache if the WATCH notify type
3899           is KILLED, SERVER_SIGNOFF or SIGNOFF.  Affected file is
3900           lib/silcclient/client_notify.c.
3901
3902         * Check the watcher list before and after changing nickname
3903           when the NICK_CHANGE notify is received.  Affected file is
3904           silcd/idlist.c.
3905
3906         * Fixed a crash in OPER and SILCOPER command sending.  Empty
3907           passphrase caused the crash.  Affected file is
3908           lib/silcclient/command.c.
3909
3910 Wed May 15 19:01:42 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3911
3912         * Merged with Irssi CVS for Irssi SILC client.
3913
3914 Tue May 14 19:37:48 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3915
3916         * Completed the protocol specifications.
3917
3918 Tue May  7 20:41:58 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3919
3920         * Merged with Irssi CVS for Irssi SILC client.
3921
3922 Tue May  7 11:07:16 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3923
3924         * Added the founder's public key delivery to the
3925           CUMODE_CHANGE notify type as well.  Updated the protocol
3926           specs and the code.  Affected files are silcd/packet_send.[ch],
3927           silcd/packet_receive.c and silcd/command.c.
3928
3929 Mon May  6 19:46:12 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3930
3931         * Added silc_pkcs_public_key_copy function into the
3932           lib/silccrypt/silcpkcs.[ch].
3933
3934         * Remove the `iv' from the SilcChannelEntry since we can
3935           live without it.  Affected files are silcd/idlist.h and
3936           silcd/packet_receive.c.
3937
3938         * Added support for sending the founder's public key in
3939           the CMODE_CHANGE notify packet in the server.  Affected
3940           files are silcd/packet_send.[ch], silcd/packet_receive.c,
3941           silcd/command.c and silcd/server.c.
3942
3943         * Changed the FOUNDER_AUTH authentication to use only
3944           public key authentication as defined by new protocol
3945           specs.  Passphrase authentication with that mode cannot
3946           be used anymore.  It is now possible to reclaim founder
3947           mode from any server in the network.  Affected files are
3948           silcd/command.c, silcd/idlist.h and silcd/command_reply.c.
3949
3950         * Added permanent channels support by making the channel
3951           permanent when FOUNDER_AUTH mode is set on the channel.
3952           The channel will not be destroyed even if channel is empty
3953           when that mode is set.  Protocol TODO #17.  Affected
3954           files are silcd/server.[ch], server_util.[ch],
3955           silcd/command.c, silcd/packet_receive.c and
3956           lib/silcclient/command.c.
3957
3958 Fri May  3 18:36:51 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3959
3960         * Added reference counter to the command reply context in
3961           the client library.  Affected files are
3962           lib/silcclient/command_reply.[ch].
3963
3964 Fri May  3 11:37:10 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3965
3966         * Fixed rekey protocol with PFS in the client library.
3967           Affected file is lib/silcclient/protocol.c.
3968
3969         * Added support for list of errors in client library
3970           command reply handling.  Affected file is
3971           lib/silcclient/command_reply.c.
3972
3973         * Defined that the WHOIS and IDENTIFY commands can send
3974           list of errors.  Updated the protocol specs.  Protocol
3975           TODO #2.
3976
3977         * Added support for sending list of errors to WHOIS and
3978           IDENTIFY commands in server.  Added support for receiving
3979           list of errors in server.  Affected files are
3980           silcd/command.c and silcd/command_reply.c.
3981
3982         * Fixed client info resolving on LEAVE command in client
3983           library to not crash.  Affected file is
3984           lib/silcclient/client_notify.c.
3985
3986 Thu May  2 08:45:11 CEST 2002 Pekka Riikonen <priikone@silcnet.org>
3987
3988         * Defined that the NICK command replies with thew changed
3989           nickname too, to make the nickname changing simpler at
3990           the client's end.  Updated protocol specs and the code
3991           in client and server.  Affected files are
3992           silcd/command.c, lib/silcclient/command_reply.c and
3993           lib/silcclient/command.c.
3994
3995 Mon Apr 29 20:10:42 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3996
3997         * Added `Compressed' packet flag to indicate that the packet
3998           payload is compressed by the sender.  Updated the protocol
3999           specs and the core library.  The compression still is not
4000           implemented in the sources.  Affected file is
4001           lib/silccore/silcpacket.h.
4002
4003 Mon Apr 29 09:48:12 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
4004
4005         * Remove pending command callbacks also if the connection
4006           to the server is destroyed.  Affected file is
4007           lib/silcclient/client.c.
4008
4009 Sat Apr 27 19:52:32 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
4010
4011         * Added new QUIET channel user mode that can be used to
4012           quiet a user in a channel.  Updated the protocol specs but
4013           it wasn't implemented yet.  Protocol TODO #27.  Affected
4014           file is lib/silccore/silcmode.h.
4015
4016 Mon Apr 22 09:09:44 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
4017
4018         * Added BLOCK_INVITE user mode to be able to block incoming
4019           invite notifications.  Protoocol TODO #26.  Affected files
4020           are lib/silccore/silcmode.h, lib/silcclient/command.c and
4021           silcd/command.c.
4022
4023         * SILC Publickey fields MUST be UTF-8 encoded now.  Updated
4024           the protocol specs and the code.  Affected file is
4025           lib/silccrypt/silcpkcs.c.
4026
4027 Sun Apr 21 19:44:38 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
4028
4029         * Disconnect Payload includes now the status type.  Updated
4030           the protocol specs and the code.  Protocol TODO #25.
4031           Affected files are silcd/server.c, lib/silcclient/client.c.
4032
4033         * Added NOT_AUTHENTICATED, BAD_SERVER_ID, INCOMPLETE_INFORMATION,
4034           KEY_EXCHANGE_FAILED and BAD_VERSION error status types.
4035           Moved the silc_client_command_status_messages table to the
4036           lib/silcutil/silcutil.c and added new funtion
4037           silc_get_status_message, which deprecates function
4038           silc_client_status_message.  Affected files are
4039           lib/silccore/silcstatus.h, lib/silcclient/command_reply.[ch],
4040           lib/silcutil/silcutil.[ch].
4041
4042 Fri Apr 19 17:35:15 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
4043
4044         * Defined that the nickname hash in Client ID MUST be from
4045           lowercase nickname.  This effectively changes nicknames in
4046           SILC to case-insensitive.  Updated the protocol specs and
4047           the code.  Affected files are lib/silcutil/silcutil.[ch],
4048           silcd/serverid.c, and silcd/idlist.c.
4049
4050         * Added new channel user modes BLOCK_MESSAGES_USERS and
4051           BLOCK_MESSAGES_ROBOTS.  Updated the protocol specs and the
4052           code.  Affected files are lib/silccore/silcmode.h,
4053           lib/silcclient/command.c, and silcd/packet_send.c.
4054
4055         * Added new error status ERR_RESOURCE_LIMIT.  Updated protocol
4056           specs and code.  Affected file lib/silccore/silcstatus.h.
4057
4058         * Added support for watch list.  It is possible to add nicknames
4059           to be watched, and when they come to network, leave network
4060           or user mode changes the watcher will be notified of this
4061           change.  Added SILC_COMMAND_WATCH command, added new
4062           notify type SILC_NOTIFY_TYPE_WATCH to deliver the watch
4063           notifications.  Updated the protocol specs and implemented
4064           this to library, client and server.  Protocol TODO #21.
4065           Affected files are lib/silccore/silccomand.h,
4066           lib/silccore/silcnotify.h, lib/silcclient/command[_reply].[ch],
4067           silcd/command[_reply].[ch], lib/silcclient/client_notify.c,
4068           silcd/packet_send.[ch], silcd/packet_receive.c, and
4069           irssi/src/silc/core/client_ops.c.
4070
4071         * Added user mode SILC_UMODE_REJECT_WATCHING to reject
4072           somebody watching you.  Updated the protocol specs and the
4073           code.  Affected files are lib/silccore/silcmode.h, and
4074           lib/silcclient/command.c.
4075
4076 Fri Apr 19 09:02:20 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
4077
4078         * Added service support to SILC protocol.  Added new command
4079           SILC_COMMAND_SERVICE.  Updated the protocol specs and the
4080           core library.  Services are not implemented in server or
4081           client for now.  Protocol TODO #20.  Affected files are
4082           lib/silccore/silcstatus.h, lib/silccore/silccommand.h.
4083
4084         * Added SilcStatus argument to `command' client operation
4085           to return the error status when command sending fails
4086           locally.  Changed all command in client library to return
4087           correct command status.  Affected files are
4088           lib/silcclient/command.c, lib/silcclient/silcclient.h and
4089           irssi/src/silc/core/client_ops.c.
4090
4091 Thu Apr 18 14:09:51 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
4092
4093         * Added silc_mime_parse function to parse MIME headers.
4094           Affected files are lib/silcutil/silcstruti.[ch].
4095
4096         * Added MIME header parsing in Irssi SILC Client.  It displays
4097           all textual MIME objects, others it ignores.  Affected file
4098           is irssi/src/silc/core/clien_ops.c.
4099
4100 Wed Apr 17 22:07:59 CEST 2002  Johnny Mnemonic <johnny@themnemonic.org>
4101
4102         * Fixed a bug in the pid writing function, which couldn't be
4103           written in a root-owned directory.
4104
4105 Tue Apr 16 09:34:40 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
4106
4107         * Defined that channel message to unknown Channel ID must
4108           cause SILC_NOTIFY_TYPE_ERROR notify message to the sender.
4109           Updated the protocol specs and the code in server.  The
4110           affected file is silcd/packet_receive.c.
4111
4112 Mon Apr 15 19:57:57 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
4113
4114         * Added new notify type SILC_NOTIFY_TYPE_ERROR and specified
4115           that it is used to send error notifys if error occurs during
4116           some SILC packet processing, except commands.  The error
4117           types are same as for command reply types.  Defined that
4118           if private message is sent to unknown Client ID the error
4119           is sent in SILC_NOTIFY_TYPE_ERROR instead of command reply.
4120           Updated the protocol specs and code.  Affected files are
4121           lib/silccore/silcnotify.h, added lib/silccore/silcstatus.h,
4122           lib/silcclient/client_notify.c, silcd/packet_receive.c,
4123           and irssi/src/silc/core/client_ops.c.  Renamed the
4124           SilcCommandStatus to SilcStatus.
4125
4126         * Defined the use of extra WHOIS attributes in WHOIS command.
4127           The <Requested Attributes> (defined in a separate document)
4128           can be used to request additional information about user
4129           not returned by standard WHOIS command.  Defined that server
4130           can send WHOIS command directly to client.  Client provides
4131           the requested attributes to the server.  Updated the protocol
4132           specs.  Protocol TODO #4.  Implementation is not done yet
4133           (Protocol TODO #24).
4134
4135         * Renamed function silc_client_command_status_message to
4136           silc_client_status_message.  Affected files are
4137           lib/silcclient/command_reply.[ch].
4138
4139 Sun Apr 14 21:13:42 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
4140
4141         * Changed the WHOIS, IDENTIFY and WHOWAS count arguments to
4142           32 bit integers.  Updated the protcol specs and the code.
4143           Affected files are silcd/command.c and
4144           lib/silcclient/command.c.
4145
4146 Sun Apr 14 19:49:02 CEST 2002  Johnny Mnemonic <johnny@themnemonic.org>
4147
4148         * Fixed a bug in library where sending a bogus authentication
4149           payload would lead to a crash.  Affected file is
4150           lib/silccore/silcauth.c.
4151
4152 Sat Apr 13 13:09:24 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
4153
4154         * Added detach_disabled and detach_timeout server config
4155           options to the server.  Affected files silcd/serverconfig.[ch],
4156           silcd/command.c and silcd/packet_receive.c.
4157
4158 Fri Apr 12 20:09:08 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
4159
4160         * Added resolve_cmd_ident field to the SilcClientEntry structure
4161           too so that if the entry is for example being resolved so
4162           another command may attach to the same pending command reply
4163           without requiring to resolve the same entry again.  Added
4164           support for adding multiple pending commands for one
4165           command idenfier.  Affected files lib/silcclient/command.[ch],
4166           lib/silcclient/command_reply.[ch], lib/silcclient/idlist.h.
4167
4168 Fri Apr 12 10:17:51 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
4169
4170         * Defined that server receives WHOIS command reply for private
4171           and secret channels too.  Updated protocol specs and the
4172           code in server.  Affected file silcd/command.c.
4173
4174         * Defined <channel user mode list> argument to WHOIS command
4175           reply for returning user modes on the channels.  The
4176           channel list now doesn't include the user mode anymore but the
4177           actual channel mode.  Updated protocol specs and the code in
4178           client and server.  Affected files are silcd/command_reply.c,
4179           silcd/command.c, silcd/server.c, irssi/src/silc/core/client_ops.c,
4180           and lib/silcclient/command_reply.c.
4181
4182         * Save the channels list in WHOIS command reply in normal server
4183           so that WHOIS always shows joined channels also in normal
4184           server and not just on router.  Affected file is
4185           silcd/command_reply.c.
4186
4187 Thu Apr 11 22:29:33 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
4188
4189         * Defined that server receives USERS command reply for private
4190           and secret channels too.  Updated protocol specs and the
4191           code in server.  Affected file silcd/command.c.
4192
4193 Thu Apr 11 16:32:08 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
4194
4195         * Changed the UMODE's mode mask argument to be optional.  If
4196           not provided then the command merely returns the current mode
4197           mask to the client.  Updated protocol specs and the server.
4198           Affected file is silcd/command.c.
4199
4200         * Added SILC session detachment/resuming support.  It is possible
4201           to detach by closing the network connection and then re-connect
4202           and resume to the old client session.  Added DETACHED user
4203           mode that server will set for detached client.  Added new
4204           packet RESUME_CLIENT which is used to perform the resuming
4205           process.  Added DETACH command.  Updated the protocol specs,
4206           core library, client and server.  Protocol TODO #22.  Very
4207           many affected files around the tree.
4208
4209 Wed Apr 10 16:32:01 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
4210
4211         * Changed the CMODE's mode mask argument to be optional.  If
4212           not provided then the command merely returns the current mode
4213           mask to the client.  Updated protocol specs and the server.
4214           Affected file is silcd/command.c.
4215
4216         * Changed the Killer's Client ID in KILLED notify to be just
4217           any ID payload since router server is allowed to kill as well.
4218           Updated protocol specs, client libary and server.  Affected
4219           files are lib/silcclient/client_notify.c, silcd/packet_receive.c,
4220           and irssi/src/silc/core/client_ops.c.
4221
4222 Tue Apr  9 17:15:42 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
4223
4224         * Added new user modes ANONYMOUS for special anonymous servers
4225           that may set the mode for client, and BLOCK_PRIVMSG which
4226           client may set to block incoming private messages unless the
4227           Private Message Key flag is set (using private keys to protect
4228           private messages).  Updated protocol specs and code in client
4229           and server and core library.  Protocol TODO #23.  Affected
4230           files are lib/silccore/silcmode.h, silcd/server.[ch],
4231           irssi/src/silc/core/client_ops.c, silcd/packet_receive.c,
4232           irssi/docs/help/in/umode.in, lib/silcclient/command.c.
4233
4234         * Added new channel user mode BLOCK_MESSAGES which the client
4235           may set to itself to tell server not send channel messages.
4236           Other packets such as channel key packets are still sent.
4237           Protocol TODO #23.  Updated the protocol specs, client and
4238           server.  Affected files are lib/silccore/silcmode.h,
4239           irssi/docs/help/in/cumode.in, lib/silcclient/command.c,
4240           lib/silcutil/silcutil.c, silcd/command.c, and
4241           silcd/packet_send.c.
4242
4243 Mon Apr  8 23:57:32 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
4244
4245         * Redefined the Status Payload to include now two 8 bit fields,
4246           instead of one 16 bit field.  This now makes it possible to
4247           send list of errors.  Updated the protocol specs and the code
4248           in core library, client library and server.  Protocol TODO #1.
4249           Affected files are lib/silccore/silccommand.[ch],
4250           lib/silcclient/command_reply.[ch], silcd/command.c,
4251           silcd/command_reply.c and silcd/packet_receive.[ch].
4252
4253 Mon Apr  8 19:57:40 CEST 2002  Johnny Mnemonic <johnny@themnemonic.org>
4254
4255         * Added config parse status SILC_CONFIG_EPRINTLINE, this status
4256           must be handled by the application and should tell the application
4257           that an error message was already printed, and it should print the
4258           config coords (line, filename, ...).  Affected files are
4259           silcd/serverconfig.c, lib/silcutil/silcconfig.[ch].
4260
4261         * Added local macro SILC_SERVER_CONFIG_ALLOCTMP to make the
4262           server config parsing code more readable.
4263
4264           Fixed a bug in the fetch_logging() config callback.
4265
4266           Affected files is silcd/serverconfig.c.
4267
4268         * Drop root privileges when started in foreground.  Don't drop them
4269           if debugging also.  Affected file is silcd/silcd.c.
4270
4271 Mon Apr  8 17:00:41 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
4272
4273         * Added more IM-like features by introducing new user modes
4274           for setting various presence information.  Added new modes:
4275           INDISPOSED, BUSY, PAGE, HYPER and ROBOT.  Updated protocol
4276           specs and code.  Protocol TODO #19. Affected files are
4277           lib/silccore/silcmode.h, irssi/src/silc/core/client_ops.c,
4278           irssi/docs/help/in/umode.in and lib/silcclient/command.c.
4279
4280 Sun Apr  7 17:07:59 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
4281
4282         * Added STATS command to the protocol after all, to return
4283           various statistical information about the network.  It can
4284           be used by clients to retrieve statistical information, and
4285           servers may use it to to fetch cell and network wide
4286           statistics from router.  Updated the protocol specs and
4287           implemented it to the server.  Protocol TODO #16.
4288           Affected files are lib/silccore/silccommand, silcd/command.[ch],
4289           silcd/command_reply.[ch].
4290
4291 Sat Apr  6 17:08:58 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
4292
4293         * The LIST command reply in client libary now adds new channel
4294           entry if the returned channel doesn't exist yet in cache,
4295           and returns the channel entry to the application in the
4296           command_reply client operation.  Affected file is
4297           lib/silcclient/command_reply.c.
4298
4299         * Changed the channel message payload's MAC generation to
4300           include the IV in the MAC as well.  This way all relevant
4301           parts of the channel message payload are authenticated also
4302           with the channel message MAC (and not only by packet MAC).
4303           Causes incompatibility with 1.0 protocol.  Protocol TODO #7.
4304           Affected file is lib/silccore/silcchannel.c.
4305
4306         * Fixed the SKE to save the remote version, since the
4307           silc_ske_parse_version mistakenly checked wrong version,
4308           after it replaced the start payload.  Affected files are
4309           lib/silcske/silcske.[ch].
4310
4311 Fri Apr  5 16:03:03 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
4312
4313         * Splitted lib/silcutil/silcutil.h into silcstrutil.h for
4314           string utility functions.  Added there also new functions
4315           silc_utf8_[encode/decode/valid] for UTF-8 string encoding.
4316           Affected files lib/silcutil/silcstrutil.[ch].
4317
4318         * Renamed silc_*_pem functions to silc_pem_* functions.  Affected
4319           files are lib/silcutil/silcstrutil.[ch].
4320
4321         * Defined that the security property fields in SKE SHOULD be
4322           UTF-8 encoded, defined that version string MUST be US-ASCII
4323           encoded, defined that passphrases sent in connection
4324           authentication protocol MUST be UTF-8 encoded.  Implemented
4325           these to the client and server.  Defined also that other
4326           passphrases sent in the protocol MUST be UTF-8 encoded.
4327           Affected files are lib/silcske/silcske.c,
4328           lib/silcclient/protocol.c, silcd/protocol.c,
4329           silcd/serverconfig.c, and lib/silccore/silcauth.c.
4330
4331         * Changed the silc_client_close_connection interface to not
4332           need the SilcSocketConnection which should not be visible
4333           to application.  Affected files are lib/silcclient/client.c
4334           and lib/silcclient/silcclient.h.
4335
4336         * Rewrote the text for Private Message Key Payload in the
4337           protocol specification.  Protocol TODO #11.
4338
4339 Wed Apr  3 16:24:51 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
4340
4341         * Upgraded the protocol version to 1.1, updated protocol specs
4342           and software.
4343
4344         * Added the nickname as new argument to NICK_CHANGE notify and
4345           added it to protocol specs and implemented it to client and
4346           server.  Protocol TODO #3.  Affected files are silcd/idlist.[ch],
4347           silcd/command.c, silcd/packet_receive.c, packet_send.[ch], and
4348           lib/silcclient/client_notify.c.
4349
4350         * Added the killer's client ID to the KILLED notify and added
4351           it to protocol specs and implemented it to client and server.
4352           Protocol TODO #13.  Affected files are silcd/command.c,
4353           silcd/packet_receive.c, packet_send.[ch],
4354           lib/silcclient/client_notify.c, irssi/src/silc/core/client_ops.c.
4355           The killer's client entry is now returned to application in
4356           the `notify' client operation.
4357
4358         * Fixed the Max Argument fields that had too large value set
4359           in the protocol specs.  Protocol TODO #14.
4360
4361         * Added the LEAVE command reply to return the ID of parted
4362           channel.  Updated protocol specs and implemented it to the
4363           client and server.  Protocol TODO #15.  Affected files are
4364           silcd/command.c, lib/silcclient/command_reply.c.  The channel
4365           entry is now returned to application in the `command_reply'
4366           client operation.
4367
4368         * Rewrote the version SKE version checking in client libary
4369           and in server to use the silc_parse_version_string.  Affected
4370           files are lib/silcclient/protocol.c, silcd/protocol.c.
4371
4372         * Added SILC_STATUS_ERR_NO_CHANNEL_FOPRIV error status to few
4373           commands that was missing it, and updated protocol specs and
4374           the server implementation.  Protocol TODO #10.  The affected
4375           file is silcd/command.c.
4376
4377         * Defined new message flags SILC_MESSAGE_FLAG_REPLY to be
4378           generic reply to a generic request (REQUEST flag), and
4379           SILC_MESSAGE_FLAG_DATA to send any kind of data in a generic
4380           way.  A draft-riikonen-silc-flags-payloads-00.txt is written
4381           to define the payload for DATA flag.  Added the flags to
4382           the implementation.  Protocol TODO #9.  Affected file is
4383           lib/silccore/silcchannel.h.
4384
4385           Changed the client library to return the message length
4386           to application as well in the channel_message and private_message
4387           client operations.  Affected files are
4388           lib/silcclient/client_prvmsg, lib/silcclient/client_channel.c,
4389           lib/silcclient/silcclient.h, irssi/src/silc/core/client_ops.c,
4390           and lib/silcclient/client_ops_example.c.
4391
4392         * Added two new channel modes: SILC_CMODE_SILENCE_USERS
4393           and SILC_CMODE_SILENCE_OPERS which can be used to moderate
4394           the channel.  Updated protocol specs and impelemented this
4395           to client and server.  Protocol TODO #6.  Affected files are
4396           silcd/packet_receive.c, server_util.c, lib/silcclient/command.c,
4397           lib/silcclient/client_channel.c, lib/silccore/silcmode.h.
4398
4399           Added new options m and M to CMODE command in Irssi SILC
4400           client to set these modes.
4401
4402         * Deprecated all administrative commands from SILC protocol
4403           since they are highly implementation specific commands.
4404           Updated protocol specs.  Moved the old commands in
4405           implementations to private range of command types.  Affected
4406           files are silcd/command.c, lib/silcclient/command.c and
4407           lib/silcclient/command_reply.c.  Protocol TODO #8.
4408
4409         * Fixed a bug in server where sending unknown command crashes
4410           the server.  Affected file silcd/command.c.
4411
4412 Wed Apr  3 09:57:47 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
4413
4414         * Added SILC_PROTOCOLVERSION macro to check protocol version
4415           of a socket connection.  The affected file is
4416           lib/silcutil/silcsockconn.h.
4417
4418         * Added better error logging in rekey protocol.  Affected file
4419           silcd/protocol.c.
4420
4421         * Do not check public key types in SKE during rekey.  Affected
4422           file lib/silcske/payload.c.
4423
4424         * Fixed the rekey protocol with PFS, which was totally broken.
4425           Affected file silcd/protocol.c.
4426
4427 Tue Apr  2 14:55:06 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
4428
4429         * Some client implementations quit network by doing first LEAVE
4430           and then immediately SIGNOFF (like Bombyx).  We now do check
4431           after a short time after LEAVE notify and check whether the
4432           client is still valid after LEAVE, and if not we remove it from
4433           cache.  Affected file is lib/silcclient/client_notify.c.
4434
4435 Tue Apr  2 13:39:04 CEST 2002  Johnny Mnemonic <johnny@themnemonic.org>
4436
4437         * Merged version 1.1.4 of zlib. Even if it not currently in use,
4438           it's good not to have security holes here.
4439
4440         * Fixed a negative refcount situtuation for the config context.
4441           Affected file is silcd/serverconfig.c.
4442
4443 Mon Apr  1 20:15:10 CEST 2002  Johnny Mnemonic <johnny@themnemonic.org>
4444
4445         * ROBOdoc documented lib/silcutil/silcutil.h.
4446
4447 Sat Mar 30 21:06:45 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4448
4449         * Optimized even more the SilcPacketContext structure.  Now
4450           totally saved 16 bytes of memory per context after optimization.
4451           Affected files are lib/silccore/silcpacket.[ch].
4452
4453         * Made strict checks for valid SILC IDs.  Affected file is
4454           lib/silccore/silcid.c.
4455
4456 Sat Mar 30 18:15:55 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4457
4458         * Changed the object argument for silc_cipher_register,
4459           silc_hash_register, silc_hmac_register and silc_pkcs_register
4460           to const.  Affected files are lib/silccrypt/silccipher.[ch],
4461           silchash.[ch], silchmac.[ch] and silcpkcs.[ch].
4462
4463         * Changed the silc_get_username and silc_get_real_name to
4464           never fail.  Affected file lib/silcutil/unix/silcunixutil.c.
4465
4466         * Fixed the Irssi SILC Client to use the silc_get_username and
4467           silc_get_real_name insted of glib routines since the glib
4468           routines only corrupt stack.  Fixes the Irssi SILC to work in
4469           Cygwin.  Affected file irssi/src/silc/core/silc-core.c.
4470
4471         * Fixed the Irssi to not use g_get_home_dir since it crashes
4472           or returns garbage on cygwin and corrupts stack.  Added function
4473           get_home_dir to Irssi routines.  Affected files are
4474           irssi/src/core/misc.[ch] and irssi/src/core/core.c.
4475
4476 Fri Mar 29 21:55:41 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4477
4478         * Made some structure optimizations.  SFTP memory FS MemFSEntry
4479           entry structure.  Optimized SilcTask structure.  Optimized
4480           SilcPacketContext structure.
4481
4482           Affected files lib/silcsftp/sftp_fs_memory.c,
4483           lib/silcutil/silcschedule.c, lib/silccore/silcpacket.h.
4484
4485 Fri Mar 29 10:41:07 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4486
4487         * And yet again reverted back the config thing since Johnny
4488           screwed it up.  Affected file silcd/serverconfig.[ch], server.c,
4489           and silcd.c.
4490
4491         * Fixed memory leaks from config object.  Affected files are
4492           silcd/serverconfig.[ch].
4493
4494         * Added support for adding new connections to the server in rehash.
4495           After rehash they take effect.
4496
4497           Added support for changing the maximum allowed connections in
4498           rehash.  The number can grow but going smaller is not supported.
4499
4500           Added function silc_server_num_sockets_by_remote to the
4501           silcd/server_util.[ch].
4502
4503           Affected files are silcd/server.c, and silcd/serverconfig.[ch].
4504
4505 Fri Mar 29 03:26:12 CET 2002 Johnny Mnemonic <johnny@themnemonic.org>
4506
4507         * Added preliminary checking during config parsing for a valid
4508           public/private key and removed further checks in the code.
4509           Affected files are silcd/serverconfig.[ch], server.c.
4510
4511         * Moved functions silc_server_drop() and silc_server_daemonise()
4512           from server.c to silcd.c since they are stricly related to
4513           the application activity.
4514
4515         * Reverted a small part of the automatic ref/unref since
4516           it caused a double unref in some situations.  Affected
4517           files are silcd/silcd.[ch], server.c, serverconfig.c.
4518
4519         * Added some .cvsignore files in the lib directory.
4520
4521 Thu Mar 28 22:51:15 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4522
4523         * Fixed silc_net_gethostbyaddr to correctly resolve by
4524           address.  Affected file lib/silcutil/silcnet.c.
4525
4526         * Fixed the notify relaying to client.  The HMAC to be used
4527           with relayed packets ws wrong and caused decryption failure
4528           at the client end.  Affected file is silcd/packet_receive.c.
4529
4530 Thu Mar 28 19:02:05 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4531
4532         * Created new branch silc_protocol_1_0_branch.
4533
4534         * Reverted the silc_log_quick change in lib/silcutil/silclog.c.
4535
4536         * Changed the silc_server_config_* routines to be SilcServer
4537           independent.  They are now officially application specific code
4538           and not part of generic server implementation.  Affected files
4539           are silcd/serverconfig.[ch], silcd/silcd.c, silcd/server.c.
4540
4541 Thu Mar 28 17:01:43 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4542
4543         * Added automatic referencing of config context in the
4544           silc_server_config_alloc, and automatic unreferencing in the
4545           silc_server_config_destroy.  Affected files are
4546           silcd/serverconfig.[ch], silcd/silcd.c.
4547
4548         * Fixed the silc_log_quick handling in the logging routines.
4549           It didn't log quickly when it was TRUE.  Affected file is
4550           lib/silcutil/silclog.c.  Also the flush delay was set even
4551           if it was 0 in config file.  Affected file is
4552           silcd/serverconfig.c.
4553
4554         * Added support for changing key pair of the server in rehash.
4555           Affected file silcd/server.c.
4556
4557 Thu Mar 28 12:17:21 CET 2002  Pekka Riikonen <priikone@silcnet.org>
4558
4559         * Fixed the TOPIC_SET notify to not cras.  It changed the topic
4560           too early, before getting the channel entry.  Affected file
4561           is silcd/packet_receive.c.
4562
4563 Thu Mar 28 09:58:16 CET 2002  Johnny Mnemonic <johnny@themnemonic.org>
4564
4565         * Added functions silc_server_config_[ref/unref], these are used
4566           to prevent that the config object is destroyed.
4567
4568           No longer directly affect global variables silc_log_quick and
4569           silc_log_delay, they are first cached inside the config object
4570           and then applied with silc_server_config_setlogfiles().
4571
4572           silc_server_config_set_defaults() is now internal to
4573           serverconfig.c, there are no reasons to show this internal stuff
4574           to the server.
4575
4576           Affected files are silcd/serverconfig.[ch].
4577
4578         * Added macro SILC_SERVER_LOG_STDERR(), this should replace most
4579           fprintf's to stderr, since some code may be executed again after
4580           the server went into the background.  Affected files are
4581           silcd/server.[ch].
4582
4583         * Added rehash support. Added function silc_server_rehash() that
4584           will perform all the basic tasks of the rehashing procedure.
4585
4586         * Added command line option `-x, --hexdump'. This will enable the
4587           SILC_LOG_HEXDUMP calls that are no longer enabled with `--debug'.
4588           The option `--hexdump' implies `--debug'.
4589
4590         * Fixed a bad bug in the logging APIs (silcutil library) where
4591           the application would crash after calling silc_log_reset_all().
4592
4593 Wed Mar 27 19:43:16 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4594
4595         * Fixed the KICKED notify handling in client library to
4596           correctly remove the channel and all entries from the
4597           channel when I was kicked.  This bug crashed the client.
4598
4599           Fixed yet another but in KICKED notify handling to remove
4600           the kicked client correctly from the channel.
4601
4602           Affected file is lib/silcclient/client_notify.c.
4603
4604         * Fixed a minor bug in looking up correct client entry
4605           in KICKED notify in server.  Affected file is
4606           silcd/packet_receive.c.
4607
4608         * Fixed the lib/silcmath/Makefile.am to include the MPI and GMP
4609           sources correctly to distribution.  Fixes --with-gmp option.
4610
4611         * Removed the manual rehashing from ID Cache, and changed it
4612           to use the SILC Hash Table's auto rehash feature.  Affected
4613           file is lib/silccore/silcidcache.c.
4614
4615 Wed Mar 27 00:07:11 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4616
4617         * Fixed a bug in the silc_client_nickname_format function that
4618           handles the multiple same nickname formatting.  Two clients
4619           with same nickname caused problems after the first one left
4620           and rejoined.  It didn't format the nickname correctly.
4621           Affected file is lib/silcclient/idlist.c.
4622
4623 Tue Mar 26 19:33:03 CET 2002  Pekka Riikonen <priikone@silcnet.org>
4624
4625         * Don't change the topic if olod topic is same as new one.
4626           Affected file is silcd/packet_receive.c.
4627
4628 Mon Mar 25 21:11:35 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4629
4630         * Added cross-reference support to the SILC Documentation
4631           generator.  All types across all HTML files are now cross-
4632           referenced.  Affected files util/robodoc/generator.c and
4633           scripts/silcdoc/silcdoc.
4634
4635         * Added file lib/silcutil/silctypes.h to include all the
4636           arithmetic type definitions and some macros.  Removed
4637           includes/bitmove.h and moved macros to silctypes.h.
4638
4639 Mon Mar 25 17:19:46 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4640
4641         * Merged bugfixes for Irssi SILC client from irssi.org CVS.
4642
4643 Sun Mar 24 11:21:04 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4644
4645         * Added `type' argument to silc_id_payload_parse_id function which
4646           now returns the type of the ID to the sent pointer.  Affected
4647           file is lib/silccore/silcid.[ch].
4648
4649         * Added check for CMODE_CHANGE notify type that mode change is
4650           allowed by the sender.  Affected file silcd/packet_receive.c.
4651
4652         * Added check for CUMODE_CHANGE notify type that mode change is
4653           allowed by the sender.  Affected file silcd/packet_receive.c.
4654           Added the ID type as CUMODE_CHANGE notify type as argument
4655           to the `notify' client operation.  Affected files are
4656           lib/silcclient/client_notify.c, irssi/src/silc/core/client_ops.c.
4657
4658         * Added function silc_client_add_server to the client library.
4659           Added support for resolving also channel and server info when
4660           received unknown entity in notify packet.  Affected files are
4661           lib/silcclient/idlist.[ch], lib/silcclient/client_notify.c.
4662
4663         * Added function silc_command_get_status to return the command
4664           status from the command reply's argument payload.  Affected files
4665           are lib/silccore/silccommand.[ch].
4666
4667         * Added check for KICKED notify type that the kicking is
4668           allowed by the client.  Affected file silcd/packet_receive.c.
4669
4670         * Created function silc_get_input which can be used to get input
4671           (echo on or off) from user on command line.  Affected files are
4672           lib/silcutil/silcutil.[ch].
4673
4674 Sat Mar 23 09:51:26 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4675
4676         * Optimized silc_server_packet_relay_to_channel function.
4677           Added new function silc_channel_message_payload_encrypt which
4678           can be called directly if channel message payload needs to
4679           be encrypted and is already encoded (no need to call _encode
4680           function).  Packet relaying is now done by router without any
4681           extra memory allocations.  Affected files are
4682           lib/silccore/silcchanel.[ch], silcd/packet_receive.c and
4683           silcd/packet_send.c.
4684
4685         * Fixed the INVITE notify handling.  It took wrong arguments
4686           as invite list and invite delete.  Affected file is
4687           silcd/packet_receive.c.
4688
4689         * Added check for TOPIC_SET notify type that the topic change is
4690           allowed by the client.  Affected file silcd/packet_receive.c.
4691
4692         * Added check for INVITE notify type that inviting is allowed by
4693           the client.  Affected file silcd/packet_receive.c.
4694
4695         * Changed the silc_server_client_on_channel to return the
4696           SilcChannelClientEntry as well.  Moved the function
4697           silc_server_check_cmode_rights to server_util.[ch].
4698           Affected files are silcd/server_util.[ch], silcd/command.c.
4699
4700         * Added function silc_server_check_umode_rights to check whether
4701           changing client's user mode is allowed.  Added check for
4702           UMODE_CHANGE notify type that the umode change is allowed
4703           by the client.  Affected files are silcd/server_util.[ch],
4704           silcd/packet_receive.c and silcd/command.c.
4705
4706 Fri Mar 22 12:25:58 CET 2002  Pekka Riikonen <priikone@silcnet.org>
4707
4708         * Fixed the SILC_PACKET_MAX_ID_LEN to actually be the max
4709           ID length.  It ignored that ID can be IPv6 based as well.
4710           Affected file lib/silccore/silcpacket.h.
4711
4712         * Fixed the silc_id_id2str and silc_id_str2id to take the
4713           IPv6 address offset's into consideration.  Affecte file is
4714           lib/silccore/silcid.c.
4715
4716 Thu Mar 21 20:44:13 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4717
4718         * Fixed the internal Unix scheduler functions to check for
4719           NULL context they may receive.  The affected file is
4720           lib/silcutil/unix/silcunixschedule.c.
4721
4722 Thu Mar 21 19:12:22 EET 2002  Timo Sirainen <tss@iki.fi>
4723
4724         * Changed hardcoded ~/.silc paths to use get_irssi_dir() so you
4725           can specify different directory with --home command line
4726           parameter. Affected files irssi/src/silc/core/client_ops.c,
4727           clientutil.c
4728
4729         * SILC-specific commands aren't now executed if the active server
4730           isn't of SILC-type, so there won't be problems with having
4731           IRC and SILC protocol support in same client. Affected files
4732           irssi/src/silc/core/silc-channels.c, silc-servers.c,
4733           silc-commands.h
4734
4735 Wed Mar 20 11:06:57 CET 2002  Pekka Riikonen <priikone@silcnet.org>
4736
4737         * Improved the signal support in SILC Schedule.  Added new
4738           function silc_schedule_signal_call which is used by application
4739           to mark a signal to be called.  It is now safe to perform
4740           any kind of tasks in signal callbacks since it is guaranteed
4741           that the application specified signal callback is called
4742           after the signal is over.  Affected files are
4743           lib/silcutil/silcschedule.[ch], lib/silcutil/*/silc*schedule.c.
4744
4745 Tue Mar 19 20:42:41 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4746
4747         * Added `name' field to SilcChannelPrivateKey to represent
4748           application given name for the key.  Moved also the context from
4749           lib/silcclient/idlist.h into lib/silcclient/silcclient.h.
4750           Added the `name' argument also to the function
4751           silc_client_add_channel_private_key.
4752
4753           Added function silc_client_current_channel_private_key to set the
4754           current channel private key in use.
4755
4756           Added "change" command to KEY command which can be used to change
4757           the current channel private key.  Bound the command also to
4758           alt+K (Alt+Shift+k).
4759
4760           Also affected files lib/silcclient/client_channel.c,
4761           irssi/src/docs/help/in/key.in, irssi/src/silc/core/silc-channel.c.
4762
4763 Tue Mar 19 16:32:43 CET 2002  Pekka Riikonen <priikone@silcnet.org>
4764
4765         * Added silc_rng_get_byte_fast function in to the
4766           lib/silccrypt/silcrng.[ch].
4767
4768         * Changed the interface of silc_packet_assemble and the
4769           silc_packet_send_prepare.  If silc_packet_assmble is now
4770           called the application does not call silc_packet_send_prepare
4771           because the library will call it automatically.  These
4772           interfaces now also return a reference to the outgoing buffer
4773           which includes the assembled packet, which the application can
4774           use to encrypt the packet.
4775
4776           Affected files are lib/silccore/silcpacket.[ch],
4777           lib/silcclient/client.c, client_channel.c client_prvmsg.c,
4778           silcd/packet_send.c, server_backup.c and packet_receive.c.
4779
4780         * Fixed a packet sending bug on very high load, where outgoing
4781           packet queue wasn't handled correctly and packets got corrupted.
4782           Affected files are lib/silcutil/*/silc*sockconn.c,
4783           lib/silcclient/client.c and silcd/server.c.
4784
4785 Mon Mar 18 21:00:41 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4786
4787         * Added macro SILC_PACKET_DATALEN which can be used during
4788           packet assembling to check whether the data to be added to
4789           the packet will fit to SILC_PACKET_MAX_LEN.  If not the data
4790           len is truncated until it fits it.
4791
4792           Added checks for maximum length of channel message payload and
4793           private message payload also.
4794
4795           Added checks for maximum packet length in server and in
4796           client library.
4797
4798           Affected files are lib/silccore/silcpacket.h, silcd/packet_send.c,
4799           lib/silcclient/client.c, lib/silccore/silcchannel.c and
4800           lib/silccore/silcprivate.c, lib/silcclient/client_channel.c and
4801           lib/silcclient/client_prvmsg.c.
4802
4803 Mon Mar 18 14:54:42 CET 2002  Pekka Riikonen <priikone@silcnet.org>
4804
4805         * Added silc_server_packet_queue_purge call to the
4806           silc_server_disconnect_remote to assure that all data in the
4807           queue before disconnecting is sent to the network.  Affected
4808           file silcd/server.c.
4809
4810 Sun Mar 17 19:26:16 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4811
4812         * Added the deleting of server's own ID cache entry to the
4813           silc_server_free function.  Free also everything else that
4814           has been allocated in silc_server_init.  The affected file
4815           is silcd/server.c.
4816
4817 Sun Mar 17 15:44:56 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4818
4819         * Added functions silc_parse_version_string, silc_version_to_num,
4820           and silc_ske_parse_version to parse SILC protocol style version
4821           strings.  Affected files lib/silcutil/silcutil.[ch] and
4822           lib/silcske/silcske.[ch].
4823
4824         * Added new configuration params: version_protocol, version_software
4825           and version_software_vendor to specify what version the remote
4826           host must at least be to be able to connect to server.  The vendor
4827           string can be regex matched too.  Added new function
4828           silc_server_connection_allowed to check maximum number of allowed
4829           connections, and allowed versions for incoming connections.
4830           Affected files are silcd/server.c, server_util.[ch] and
4831           serverconfig.[ch].
4832
4833 Sun Mar 17 10:24:50 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4834
4835         * Added preliminary support for signals in scheduler.  The
4836           signals we care about are now blocked always when the scheduler
4837           is locked.  This way we can synchronise the use of signal with
4838           scheduler.  It is guaranteed that when signal occurs the scheduler
4839           is not locked, and thus new tasks can be safely added to the
4840           scheduler.
4841
4842           Renamed silc_schedule_wakeup_init and silc_schedule_wakeup_uninit
4843           to silc_schedule_internal_init and silc_schedule_internal_uninit.
4844           Added new platform specific routines
4845           silc_schedule_internal_signals_[un]block and
4846           silc_schedule_internal_signal_[un]register.
4847
4848           Added new functions to SILC Schedule API:
4849           silc_schedule_signal_[un]register.  Each signal that application
4850           is going to use should be registered to the scheduler.
4851
4852           Affected files are lib/silcutil/silcschedule.[ch],
4853           lib/silcutil/*/silc*schedule.c.
4854
4855 Sat Mar 16 22:39:23 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4856
4857         * Check for unauthenticated client and server in the
4858           silc_server_new_client and silc_server_new_server functions.
4859           Affected file silcd/packet_receive.c.
4860
4861         * Added function silc_string_is_ascii to check whether given
4862           string is 7-bit ASCII string.  Affected files are
4863           lib/silcutil/silcutil.[ch].
4864
4865         * Added function silc_id_is_valid_server_id into the
4866           silcd/serverid.c and added checking for valid Server ID's in
4867           silc_server_new_server.  The Server ID must always be based
4868           on the server's public IP address.
4869
4870         * Added logging of DISCONNECT packet message in the server.
4871           Affected file silcd/server.c.
4872
4873 Sat Mar 16 18:04:30 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4874
4875         * Changed all library interfaces that use Global RNG to also
4876           accept SilcRng as argument.  Affected files are
4877           lib/silcclient/command.c, lib/silccore/silcauth.[ch],
4878           lib/silccore/silcchanel.[ch], lib/silcclient/client_channel.c,
4879           silcd/packet_send.c, lib/silccore/silcprivate.[ch],
4880           lib/silcmath/silcprimegen.c, lib/silcmath/silcmath.h, and
4881           lib/silccrypt/rsa.c.
4882
4883         * Added function silc_pkcs_generate_key to the
4884           lib/silccrypt/silcpkcs.[ch] for applications so that they
4885           don't need to do pkcs->pkcs->init calls anymore.
4886
4887         * Remove SilcSocketConnection from the SFTP API since it really
4888           wasn't needed there.  The application has the information
4889           saved in its contexts anyway and the SFTP layer doesn't need
4890           know about it.  Affected files lib/silcsft/silcsftp.h and
4891           lib/silcsftp/sftp_[server/client].c.
4892
4893         * Rewrote the SILC SIM (modules) interface in lib/silcsim.[ch].
4894           The SilcSimContext is not SilcSim.
4895
4896         * Fixed possible buffer overflows in silc_id_render in the
4897           lib/silcutil/silcutil.c.
4898
4899         * On EPOC the global crypto module lists are not used at all
4900           in the crypto library.  Added support for using the constant
4901           algorithm list on EPOC.  Affected files are
4902           lib/silccrypt/silccipher.c, silchash.c, silchmac.c and
4903           silcpkcs.c.
4904
4905         * Fixed the handling of third parameter of KICKED notify, since
4906           it was mistakenly updated to SILC Protocol 1.0 even though it
4907           is to be included in 1.1.  Since it is not in 1.0 it is not
4908           mandatory, and this fix now handles it only if it is provided,
4909           and it is not error if it is not provided.  Affected file
4910           lib/silcclient/client_notify.c.
4911
4912 Sat Mar 16 09:07:27 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4913
4914         * Handled CHANNEL_CHANGE notify (ignore it) in Irssi SILC
4915           client.  Affected file irssi/src/silc/core/client_ops.c.
4916
4917         * Merged with Irssi 0.8.4 from irssi.org CVS.
4918
4919 Thu Mar 14 12:53:57 CET 2002  Pekka Riikonen <priikone@silcnet.org>
4920
4921         * Check for valid socket connection in client entries before
4922           sending any messages.  Fixes a crash, but doesn't fix some
4923           other underlaying bug that is lurking there.  Affected
4924           file silcd/packet_send.c.
4925
4926 Thu Mar 14 13:38:12 EET 2002  Timo Sirainen <tss@iki.fi>
4927
4928         * $usermode, $cumode and $cumode_space expandos shouldn't do
4929           anything with non-SILC server records. Affected file
4930           irssi/src/silc/core/silc-expandos.c
4931
4932 Wed Mar 13 21:38:26 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4933
4934         * Fixed the silc_net_check_[host/local]_by_sock to support
4935           IPv6 bound sockets as well.  Now they can return IPv6 addresses
4936           as well.  Affected file lib/silcutil/silcnet.c.
4937
4938         * Fixed silc_net_addr2bin to correctly convert IPv6 addresses.
4939           Affected lib/silcutil/unix/silcunixnet.c.
4940
4941         * Fixed ID rendering (at least on some platforms, not NetBSD)
4942           for IPv6 addresses.  Affected file lib/silcutil/silcutil.c.
4943
4944 Tue Mar 12 17:58:59 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4945
4946         * Added silc_hash_public_key and silc_hash_public_key_compare
4947           functions to be used with SilcHashTable.  They can be used to
4948           hash public keys and compare public keys in hash table.  Affected
4949           file lib/silcutil/silcutil.[ch].
4950
4951         * Added support for specifying multiple public keys for Client
4952           connection section in server configuration file.  This makes it
4953           possible to accept multiple public keys from same host, or to
4954           make a section that accepts any incoming host, and have the
4955           accepted public keys listed in the section.
4956
4957           Added functions silc_sever_[find/get]_public_key,  added the
4958           support for this actually to all connection sections but only
4959           the Client section is currently allowed to specify multiple
4960           public keys.
4961
4962           Affected files are silcd/server.c, server_internal.h,
4963           command.c, protocol.c, server_util.[ch], packet_receive.c.
4964
4965 Mon Mar 11 23:37:38 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4966
4967         * Merged Irssi 0.8.2 from irssi.org CVS.
4968
4969 Sun Mar 10 23:34:48 CET 2002  Johnny Mnemonic <johnny@themnemonic.org>
4970
4971         * If silc_debug is TRUE, also output standard logging messages
4972           to stderr with the debug output.
4973
4974           Made silc_log_reset_all() flushing all channels before returning.
4975           Also fixed some documentation typos.
4976
4977           Affected files are lib/silcutil/silclog.[ch].
4978
4979 Sun Mar 10 20:07:49 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4980
4981         * Fixed the server to check correctly the amount of connections
4982           from single host, by checking also the type of the connection.
4983           Fixed also the comparison of number of connections and number
4984           of allowed connections.  Affected files are silcd/server.c,
4985           server_util.[ch].
4986
4987 Fri Mar  8 17:16:41 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4988
4989         * Fixed the USERS command reply to save the user's mode on the
4990           channel as well.  Fixed JOIN command reply to check whether a
4991           client is on channel already and not join it twice.  Affected
4992           file lib/silcclient/command_reply.c.
4993
4994         * Added new file silc-expandos.c into irssi/silc/core/ to return
4995           various stuff for various signal for the statusbar etc. updating.
4996           Now Irssi SILC client prints channel user modes etc. on the
4997           statusbar.
4998
4999         * The user mode (like server/router operator changes) is now shown
5000           on the Irssi SILC client's statusbar.  The affected files are
5001           irssi/src/silc/core/client_ops.c, silc-expandos.c.
5002
5003 Thu Mar  7 19:21:22 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5004
5005         * Changed silc_mutex_[un]lock calls in lib/silcutil/silcschedule.c
5006           to SILC_SCHEDULE_[UN]LOCK macros.
5007
5008         * Added more error printing to logs in server code.  Affected
5009           files silcd/server.c and silcd/protocol.c.
5010
5011         * Fixed -S option parsing in Irssi SILC Client.  Affected file
5012           irssi/src/silc/core/silc-core.c.
5013
5014         * Added silc_buffer_alloc_size function.  Affected file is
5015           lib/silcutil/silcbuffer.h.
5016
5017 Tue Mar  5 14:37:27 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5018
5019         * Changed all silc_[hash|hmac|cipher|pkcs]_default tables to
5020           constants.  Affected files in
5021           lib/silccrypt/silcpkcs.[ch], silchash.[ch], silchmac.[ch] and
5022           silccipher.[ch].
5023
5024         * Changed the internal SFTP Memory FS table to const.  Affected
5025           file lib/silcsftp/sftp_fs_memory.c.
5026
5027 Sun Mar  3 18:37:13 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5028
5029         * Fixed the buffer formatting and unformatting routines to
5030           check the size of 64 bits types with sizeof().  Affected
5031           file is lib/silcutil/silcbuffmt.c.
5032
5033 Mon Feb 25 17:19:05 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5034
5035         * Removed 0.6.x backwards support.
5036
5037 Sun Feb 24 12:53:25 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5038
5039         * Changed all integer type names:
5040           [u]int[8/16/32/64] -> Silc[UInt/Int][8/16/32/64].  This is
5041           to avoid collisions with other libraries using same type names
5042           as we did.
5043
5044 Sat Feb 23 20:31:43 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5045
5046         * Added `prefer_ipv6' argument to the functions
5047           silc_net_gethostbyname[_async].  If it is TRUE it will return
5048           IPv6 address over IPv4.  If FALSE IPv4 address is returned
5049           even if IPv6 address was found.  Affected files
5050           lib/silcutil/silcnet.[ch].
5051
5052         * Added support silc_net_create_connection[_async] to fallback
5053           to IPv4 address if IPv6 address could not be used (like if
5054           it doesn't work on a specific system).  Affected file in
5055           lib/silcutil/unix/silcunixnet.c.
5056
5057 Sat Feb 23 15:20:30 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5058
5059         * Added silc_schedule_reinit function to do the enlarging
5060           of the max tasks handling capabilities of the scheduler.
5061           Affected files lib/silcutil/silcschedule.[ch].
5062
5063 Wed Feb 20 20:41:01 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5064
5065         * Added automatic extern "C" { ... } for C++ compilers so the
5066           application does not need to define them.  Affected file
5067           includes/silcincludes.h.
5068
5069         * Renamed lib/silcclient/silcapi.h to silcclient.h as the
5070           old name went against naming convention.  Applications now
5071           include "silcclient.h" instead of "clientlibincludes.h".
5072           Removed includes/clientlibincludes.h, it is redundant now.
5073
5074         * Renamed includes/version.h to silcversion.h.
5075
5076         * Added really preliminary support for OS/2 into the util
5077           library.  Only thread & mutex API is implemented, others
5078           are still to be implemented.  Created the lib/silcutil/os2/
5079           directory.  Created also file includes/silcos2.h.
5080
5081 Wed Feb 20 18:48:49 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5082
5083         * Added preliminary BeOS support into the util library.
5084           Created lib/silcutil/beos/, and implemented all the needed
5085           functions to support SILC on BeOS.  Created also file
5086           includes/silcbeos.h.
5087
5088 Mon Feb 18 15:49:22 EET 2002  Timo Sirainen <tss@iki.fi>
5089
5090         * Added proper initializations to silc's irssi code, so it's
5091           now possible to load it as module.  Affected files
5092           irssi/src/silc/core/silc-core.c,
5093           fe-common/silc/fe-common-silc-core.[ch] and fe-text/silc.c
5094
5095 Sun Feb 17 19:02:56 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5096
5097         * Merged latest Irssi (0.8.1) from the irssi.org's CVS into
5098           the SILC tree.
5099
5100         * Fixed the silcdoc document generator to correct generate
5101           docs from all kinds of filenames.  Affected files are
5102           util/robodoc/Source/generator.c, scripts/silcdoc/silcdoc
5103
5104         * ROBOdoc documented lib/silcutil/silcmemory.h.
5105           Added also new function silc_memdup.
5106
5107         * Removed lib/silcutil/silcbufutil.h and moved those routines
5108           to the lib/silcutil/silcbuffer.h.
5109
5110 Sun Feb 17 15:52:30 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5111
5112         * Added `user_count' to the SilcChannelEntry which now tells the
5113           number of users on the channel.  The user count is now saved
5114           in normal server of global channels as well.  Affected files
5115           silcd/server.c, idlist.h, packet_receive.c and command.c.
5116
5117         * Splitted lib/silcutil/silcutil.[ch] into silcfileutil.[ch] to
5118           include file utility functions.
5119
5120         * Fixed the lib/silcsftp/sftp_fs_memory.c to use silcutil routines
5121           instead of calling directly OS routines.
5122
5123         * Fixed NICK change printing in Irssi SILC Client. Fixed
5124           KICKED notify printing in Irssi SILC Client.  Affected file
5125           irssi/src/silc/core/client_ops.c.
5126
5127         * Fixed a NICK change bug in client library, to not recreate the
5128           client_entry->channels hash table everytime nick is changed.
5129           Affected file lib/silcclient/client.c.
5130
5131 Sun Feb 17 10:10:14 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5132
5133         * ROBOdoc documented the lib/silcske/silcske.h, and improved
5134           the SKE interface a bit.
5135
5136         * Fixed padding problem in PKCS#1. The padding was not actually
5137           random since the random number generator was used incorrectly.
5138           This security bug affects only when encrypting with PKCS#1, and
5139           it is not currently used at all in SILC. SILC only use signing
5140           with PKCS#1. Affected file lib/silccrypt/pkcs1.c.
5141
5142 Sat Feb 16 13:44:24 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5143
5144         * Rewrote the notify handling in Irssi SILC client to not call
5145           the events as signals.  Fixes problems with Perl support.
5146           Affected files irssi/src/silc/core/client_ops.c, silc-channels.c.
5147
5148         * Send the auto-nicking NICK command in client library with
5149           little timeout after connecting.  The affected file is
5150           lib/silcclient/client.c.
5151
5152         * Added following new config file settings:
5153           channel_rekey_secs, key_exchange_rekey, key_exchange_pfs,
5154           key_exchange_timeout, conn_auth_timeout, connections_max,
5155           links_max.
5156
5157           Implemented all the new config settings handling in the server.
5158
5159           Optimized the use of SKE Mutual flag usage.  Use it only
5160           if connection authentication protocol is not based in public
5161           key authentication.
5162
5163           Renamed all SilcServerConfigSection* to SilcServerConfig*
5164           to have a bit shorter names.
5165
5166           Affected files silcd/serverconfig.[ch], server.[ch], and
5167           protocol.[ch].
5168
5169 Sat Feb 16 02:46:43 CET 2002  Johnny Mnemonic <johnny@themnemonic.org>
5170
5171         * Cleaned up the listening sockets code, preparing for the rehash
5172           support.  Affected file is silcd/server.c.
5173
5174         * Fixed some output messages.  Affected files are silcd/silcd.c,
5175           and silcd/server.c.
5176
5177 Fri Feb 15 19:10:20 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5178
5179         * Create lib/doc/silcrng_intro.html document as introduction
5180           to SILC RNG.  ROBOdoc documented lib/silccrypt/silcrng.h.
5181
5182 Fri Feb 15 13:23:03 CET 2002  Johnny Mnemonic <johnny@themnemonic.org>
5183
5184         * Fixes to the silcd config template.  Affected file is
5185           doc/example_silcd.conf.in.
5186
5187         * Removed type casts from silc_calloc(), conforming to the
5188           CodingStyle.  Affected file is lib/silcutil/silcconfig.c.
5189
5190         * Removed param_name member from client, server, and router
5191           section structs, now identifying the param directly.
5192
5193           Added CONFIG_FREE_AUTH macro in config file parsing.
5194
5195           Affected files are silcd/serverconfig.[ch].
5196
5197 Fri Feb 15 12:24:08 EET 2002  Timo Sirainen <tss@iki.fi>
5198
5199         * Fixed command line parameter handling. All SILC initialization
5200           is now done in silc_core_init() which also fixes autoconnecting
5201           to servers.
5202
5203           Affected files irssi/src/silc/core/silc-core.c,
5204           irssi/src/fe-text/silc.c.
5205
5206 Thu Feb 14 22:03:58 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5207
5208         * Added new configuration options and blocks:
5209           keepalive_secs, reconnect_count, reconnect_interval,
5210           reconnect_interval_max, reconnect_keep_trying and
5211           require_reverser_lookup.  Added ConnectionParam block, and
5212           implemented the connection parameters when connecting as
5213           initiator and when accepting connections as responder.
5214
5215           Added CONFIG_IS_DOUBLE macro in config file parsing, to check
5216           whether given configuration value has been given already.
5217
5218           Affected files silcd/serverconfig.[c], server.[c].
5219
5220         * Splitted the doc/example_silcd.conf.in.  Separated the crypto
5221           algorithm parts and created new file silcalgs.conf, that
5222           is now included from the example_silcd.conf.in.
5223
5224         * Optimized the silc_server_connect_to_router_second to take
5225           the connection configuration object from the SilcServerConnection
5226           object instead of finding it during the connecting phase.
5227           Added the configuration object to SilcServerConnection struct.
5228           Affected files silcd/server_internal.h, server.c.
5229
5230 Thu Feb 14 16:02:26 CET 2002  Pekka Riikonen <priikone@silcnet.org>
5231
5232         * Add the client on channel after it was resolved at the
5233           channel message receiving, and it was not already on the
5234           channel.  Affected file lib/silcclient/client_channel.c.
5235
5236 Wed Feb 13 23:16:41 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5237
5238         * Fixed the public key authentication to allocate always the
5239           destination signature buffer instead of using static buffer.
5240           Affected file silcd/protocol.c.
5241
5242 Wed Feb 13 20:51:13 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5243
5244         * Unified the serverconfig.[ch]'s helper function interface.
5245           Affected file silcd/serverconfig.[ch].
5246
5247         * Removed doc/example_silc.conf.in since it is redundant.
5248           The make install will now install irssi/silc.conf file.
5249
5250         * Added new Passphrase and Publickey authentication methods to
5251           config file, allowing both public key and passphrase based
5252           authentication to be set at the same time.
5253
5254           Added `prefer_passphrase_auth' setting in config file which
5255           can be used to set to prefer passwd auth if both passwd and
5256           public key is set.  If not set, public key is preferred.
5257           This has effect only when being initiator (responder will try
5258           both anyway).
5259
5260           Added support for authentication with passphrase and public key
5261           at the same time.  The passphrase is tried first always since
5262           it is faster to check.
5263
5264           Affected file silcd/serverconfig.[ch], server.c, protocol.[ch].
5265
5266 Wed Feb 13 12:46:25 CET 2002  Johnny Mnemonic <johnny@themnemonic.org>
5267
5268         * Merged the new SILC Config library, with the server parsing
5269           support.  Read the header file silcconfig.h or the toolkit
5270           documentation for the news.  Affected files are
5271           doc/example_silcd.conf.in lib/silcutil/silcconfig.[ch]
5272           silcd/command.c silcd/packet_receive.c silcd/packet_send.c
5273           silcd/protocol.c silcd/server.c silcd/server_backup.c
5274           silcd/serverconfig.[ch] silcd/silcd.c.
5275
5276         * Fixed some silclog documentation.  Affected file is
5277           lib/silcutil/silclog.h.
5278
5279 Sun Feb 10 18:11:30 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5280
5281         * The silc_cipher_register, silc_hash_register and
5282           silc_hmac_register now checks if the object to be registered
5283           is registered already.  Affected files are
5284           lib/silccrypt/silccipher.c, silchash.c and silchmac.c.
5285
5286 Sun Feb 10 15:48:38 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5287
5288         * Merged new irssi from irssi.org's CVS, the version 0.7.99.
5289
5290 Sat Feb  9 14:54:33 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5291
5292         * Allow zero length channel messages inside the Channel Message
5293           Payload.  Affected file lib/silccore/silcchannel.c.
5294
5295         * Fixed scripts/silcdoc/silcdoc to support all kinds of filenames
5296           as header filenames.
5297
5298         * Removed lib/silcclient/README and created HTML file
5299           lib/silcclient/silcclient_using.html, which is now included
5300           as part of Toolkit documentation.
5301
5302 Thu Feb  7 10:12:25 CET 2002  Pekka Riikonen <priikone@silcnet.org>
5303
5304         * Fixed CUMODE_CHANGE notify handling to change the mode of
5305           correct client.  Affected file lib/silcclient/client_notify.c.
5306
5307         * Make silc_rng_alloc fail if it cannot allocate the sha1
5308           hash algorithm.  Affected file lib/silccrypt/silcrng.c.
5309
5310 Sun Feb  3 17:20:52 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5311
5312         * Fixed the file transfer's key agreement payload to include
5313           zero port also if the hostname is NULL because it could not
5314           be bound.
5315
5316           Call file transfer monitor callback now also if error occurs
5317           during key agreement protocol.
5318
5319           Changed the silc_client_file_send interface to return the
5320           SilcClientFileError instead of session id.  The session ID
5321           is returned into pointer provided as argument.
5322
5323           Check that the file exists locally before sending the
5324           file transfer request at all.
5325
5326           Affected file lib/silcclient/client_ftp.c, silcapi.h.
5327
5328         * Added SILC_CLIENT_FILE_KEY_AGREEMENT_FAILED file transfer
5329           error than can occur while key agreement protocol.  Affected
5330           file lib/silcclient/silcapi.h.
5331
5332         * Fixed the event_mode CMODE handler to not crash when mode
5333           is changed and +k mode is set in the channel.  Affected file
5334           irssi/src/silc/core/silc-channels.c.
5335
5336         * Fixed SILC_LOG_ERROR to give out Error and not Warning, and
5337           SILC_LOG_WARNING to give out Warning and not Error.  Affected
5338           file lib/silcutil/silclog.c.
5339
5340         * Fixed the channel message payload decryption in the function
5341           silc_channel_message_payload_decrypt to not modify the original
5342           buffer before it is verified that the message decrypted
5343           correctly.  Otherwise, next time it is called with correct
5344           channel key it won't encrypt since the payload is corrupted.
5345           Affected file lib/silccore/silcchannel.c.
5346
5347 Sun Feb  3 11:46:12 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5348
5349         * Do not constantly resize the window.  A fix patch by cras.
5350           Affected file irssi/src/fe-text/screen.c.
5351
5352 Sat Feb  2 16:54:18 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5353
5354         * Applied IPv6 fix patch from Jun-ichiro itojun Hagino.
5355           Affected file lib/silcutil/silcnet.c.
5356
5357 Fri Feb  1 22:33:11 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5358
5359         * Fixed a bug in hash table internal routine for traversing
5360           the table with foreach callback.  The current entry may
5361           become invalid in the callback but it was referenced after
5362           the callback returned.
5363
5364           Do not allow auto rehashing of hash table during the
5365           silc_hash_table_foreach operation, for same reasons as it is
5366           not allowed for SilcHashTableList.  Affected files are
5367           lib/silcutil/silchashtable.[ch].
5368
5369 Fri Feb  1 14:55:00 CET 2002  Pekka Riikonen <priikone@silcnet.org>
5370
5371         * Defined DLLAPI into silcincludes.h and silcwin32.h for
5372           Win32 DLL.  extern's in header files are now declared with
5373           DLLAPI.
5374
5375 Thu Jan 31 23:34:33 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5376
5377         * Fixed private message handling.  It used some old code that
5378           caused the client to crash.  Affecte file is
5379           lib/silcclient/client_prvmsg.c.
5380
5381 Thu Jan 31 19:06:22 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5382
5383         * Added function silc_client_add_channel,
5384           silc_client_replace_channel_id, and removed functions
5385           silc_client_new_channel_id and silc_idlist_get_channel_by_id
5386           from client library.
5387
5388         * Added cross reference of the joined channels to the
5389           SilcClientEntry, and changed the SilcChannelEntry's
5390           users list to SilcHashTable.  The affected files are
5391           lib/silcclient/idlist.[ch].
5392
5393         * Fixed a bug in hash table tarversing.  While the hash table
5394           is traversed with SilcHashTableList the table must not be
5395           rehashed.  It is now guaranteed that auto rehashable tables
5396           are not rehashed while tarversing the list.  Also defined that
5397           silc_hash_table_rehash must not be called while tarversing
5398           the table.  Added function silc_hash_table_list_reset that must
5399           be called after the tarversing is over.  The affected files are
5400           lib/silcutil/silchashtable.[ch].
5401
5402         * Changed all hash table traversing to call the new
5403           silc_hash_table_list_reset in server and in client library.
5404
5405         * Added function silc_client_on_channel to return the
5406           SilcChannelUser entry if the specified client entry is joined
5407           on the specified channel.  This is exported to application as
5408           well.  Affected files lib/silcclient/client_channel.c, silcapi.h.
5409
5410 Wed Jan 30 19:14:31 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5411
5412         * Fixed founder regaining problem with JOIN command on normal
5413           server.  The notify for mode change must be sent always and
5414           not only if !cmd->pending.  Affected file silcd/command.c.
5415
5416         * Fixed the WHOWAS command's reply sending to support the
5417           lists correctly.  Affected file silcd/command.c.
5418
5419 Wed Jan 30 11:11:47 CET 2002  Pekka Riikonen <priikone@silcnet.org>
5420
5421         * When sending JOIN command to router for processing the
5422           sender's old command identifier was not saved back to the
5423           sender's command context, fixed now.  The affected file is
5424           silcd/command.c.
5425
5426         * Create the key in JOIN command of the router did not return
5427           the channel key, added check for this.  Affected file is
5428           silcd/command.c.
5429
5430         * Fixed a channel ID update bug in JOIN command reply.  Do
5431           not directly upgrade the ID but call the function
5432           silc_idlist_replace_channel_id if the ID was changed.
5433           Affected file silcd/command_reply.c.
5434
5435         * Fixed memory leaks from command calling if it would fail.
5436           Affected file silcd/command.c.
5437
5438 Tue Jan 29 19:49:31 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5439
5440         * Applied patches from cras:
5441
5442           Memory leak fixes around libaries, irssi window resize fix,
5443           new silclist.h and silcdlist.h, all extern inline changed to
5444           static inline.
5445
5446         * Removed dotconf from lib/dotconf, not needed anymore.
5447
5448         * Removed TRQ from lib/trq, not needed anymore.
5449
5450         * Do more frequent heartbeats (5 minutes instead of 10 minutes)
5451           with server connections.  Later this will be configurable
5452           in config file after new config file is done.  Affected file
5453           silcd/server.c.
5454
5455 Tue Jan 29 10:35:03 CET 2002  Pekka Riikonen <priikone@silcnet.org>
5456
5457         * Fixed a crash in server related to channel announcements.
5458           Affected file silcd/server.c.
5459
5460 Mon Jan 28 17:49:42 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5461
5462         * Fixed memory leaks in silc_server_create_new_channel*
5463           functions.  Affected file silcd/server.c.
5464
5465         * Fixed the CHANNEL_CHANGE notify to re-announce the channel
5466           which ID was changed.  This way the router will send the
5467           user list for the channel again, and server won't be in
5468           desync in some rare circumstances.  Affected file is
5469           silcd/packet_receive.c.
5470
5471 Sun Jan 27 21:04:19 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5472
5473         * Check for NULL socket pointer in the function
5474           silc_server_packet_send_to_channel_real.  Affected file
5475           silcd/packet_send.c.
5476
5477         * Fixed the BAN notify handling to correctly remove ban
5478           list.  Affected file silcd/packet_receive.c.
5479
5480 Sat Jan 26 23:01:03 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5481
5482         * Fixed some header addition to Toolkit distribution in
5483           lib/silcutil/Makefile.am and lib/trq/Makefile.am.
5484
5485         * Added lib/silcclient/client_ops_example.h as an template
5486           file for application programmers to quickly start using
5487           the SilcClientOperation functions in their application.
5488           Updated the lib/silcclient/README as well to tell about this
5489           nice file made available.
5490
5491 Sat Jan 26 10:45:41 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5492
5493         * Call silc_server_remove_from_channels when removing client
5494           entry when NO_SUCH_CLIENT_ID was received.  Affected file
5495           is silcd/command_reply.c.
5496
5497 Fri Jan 25 19:12:36 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5498
5499         * Added server & router operator statistics updating.  Affected
5500           file silcd/packet_receive.c and silcd/command.c.
5501
5502         * Fixed the SERVER_SIGNOFF notify handling on normal server
5503           not to save the history information for clients.  Same was
5504           fixed earlier in remove_clients_by_server function, but not
5505           here.  Affected file silcd/packet_receive.c.
5506
5507         * Raised the default connection-retry count from 4 to 7 in
5508           server.  Affected file silcd/server.h.
5509
5510         * Cancel any possible reconnect timeouts when we start the
5511           key exchange.  Affected file silcd/server.c.
5512
5513         * Do not reconnect on connection failure when SCONNECT was
5514           given.  Affected files silcd/server.[ch].
5515
5516 Tue Jan 22 18:19:36 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5517
5518         * Removed assert()'s from the lib/silcclient/client_keyagr.c.
5519
5520         * Fixed the NICK command to always give the unformatted
5521           nickname to the one giving the NICK command.  If unformatted
5522           nickname is cached already it will be formatted and the
5523           local entry will always get the unformatted nickname.
5524           Affected file lib/silcclient/idlist.c.
5525
5526         * Fixed some double frees from client library commands.
5527           Affected file is lib/silcclient/command.c.
5528
5529         * Fixed CUMODE command in server to assure that no one can
5530           change founder's mode than the founder itself, there was a
5531           little bug.  Affected file silcd/command.c.
5532
5533 Mon Jan 21 19:07:53 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5534
5535         * Removed the SilcClientCommandDestructor from the client
5536           libary, it is not needed anymore.  Affected files are
5537           lib/silcclient/silcapi.h, command[_reply].[ch],
5538           client_notify, idlist.c.
5539
5540         * Fixed GETKEY command to first resolve client, and then
5541           resolve the server only if the client was not found, instead
5542           of resolving both at the same time.  Affected file is
5543           lib/silcclient/command.c.
5544
5545         * Added silc_client_start_key_exchange_cb and lookup the
5546           remote hostname and IP address before starting the key
5547           exchange with server.  The affected file is
5548           lib/silcclient/client.c.
5549
5550         * The server's public key is now saved using the IP address
5551           of the server and not the servername for the filename.
5552           The hostname public key filename is checked as an fall back
5553           method if the IP address based filename is not found.
5554
5555           Fixed the GETKEY command to save the fetched server key
5556           in correct filename.
5557
5558           Print the remote server's hostname now when new key is
5559           received during connection process.  Affected file is
5560           irssi/src/silc/core/client_ops.c.
5561
5562         * Return always our own public key to the client if it asks
5563           for it with GETKEY command.  Affected file silcd/command.c.
5564
5565         * Removed the use_auto_addr variable from default config
5566           file since it was in wrong section.  Affected file is
5567           irssi/src/config.
5568
5569         * Fixed TOPIC_CHANGE notification to not route it when it
5570           was sent using silc_server_send_notify_to_channel function.
5571           Affected file silcd/command.c.
5572
5573         * Fixed silc_server_send_notify_kicked to send the kicker's
5574           Client ID also, it was missing.  Affected files are
5575           silcd/command.c, silcd/packet_send.[ch].
5576
5577 Thu Jan 17 18:59:11 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5578
5579         * Do not save client history information in SERVER_SIGNOFF.
5580           Fixes the bug in normal server that it does not detect
5581           the client becoming valid after the server becomes back
5582           online.  Affected file silcd/server_util.c.
5583
5584         * Added `sock_error' field  into the SilcSocketConnection
5585           context.  When error occurs during socket operation (read
5586           or write) the error is saved.  Added also new function
5587           silc_socket_get_error to return human readable socket error
5588           message.  Affected files are lib/silcutil/silcsockconn.[ch],
5589           lib/silcutil/unix/silcunixsockconn.c, and
5590           lib/silcutil/win32/silcwin32sockconn.c.
5591
5592         * The server now prints the socket error message in the
5593           signoff for client.  Affected file silcd/server.c.
5594
5595         * Fixed the `created' channel information sending from router
5596           to server in JOIN command.  Checks now whether the channel
5597           really was created or not and set it according that.
5598
5599           Fixed the JOIN command to use the client entry's current
5600           ID during the joining procedure instead of the one it sent
5601           in the command (it is checked though), since it can change
5602           between the packet processing and command processing, and
5603           would just case unnecessary pain in the client end.  Affected
5604           file silcd/command.c.
5605
5606         * Fixed a channel key payload sending to use correct channel
5607           ID when the server was forced to change the channel's ID by
5608           router.  Router sent the key payload with the old Channel ID.
5609           Affected file silcd/packet_receive.c.
5610
5611 Wed Jan 16 22:26:30 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5612
5613         * Call silc_server_save_channel_key only if the key payload
5614           was provided in the JOIN command's command reply.  Affected
5615           file silcd/command_reply.c.
5616
5617 Tue Jan 15 18:49:41 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5618
5619         * Fixed silc_mp_sizeinbase to return the value correctly with
5620           MPI.  Affected file lib/silcmath/mp_mpi.c.
5621
5622         * Fixed the stop_server signal to correctly stop the scheduler
5623           and gracefully stop the server when SIGTERM or SIGINT signals
5624           are received.  Affected file silcd/silcd.c.
5625
5626 Mon Jan  7 23:38:19 CET 2002  Johnny Mnemonic <johnny@themnemonic.org>
5627
5628         * Simple handling of TERM and HUP signals. Also added some log
5629           flushing call around.  Affected file is
5630           silcd/silcd.c.
5631
5632         * Fixed small bugs in silclog.c. Now buffering output will take
5633           effect after 10 seconds since startup: This will ensure that
5634           no important startup messages are lost. Also output redirection
5635           will preserve original format ([Date] [Type] message).
5636           Affected file is lib/silcutil/silclog.c.
5637
5638         * Added two options to the config file, in the logging section:
5639           quicklogs:<yes/no>: and flushdelay:<seconds>:.  Affected files
5640           lib/silcutil/silclog.[ch], silcd/serverconfig.[ch].
5641
5642 Sun Jan  6 12:49:40 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5643
5644         * Do not print the warning about log files not being initialized
5645           more than once to avoid excess logging.  Affected file is
5646           lib/silcutil/silclog.c.
5647
5648         * Fixed the SIM compilation in lib/silcsim/Makefile.am.  Fixed
5649           the SIM copying in make install in Makefile.am.pre.
5650
5651 Sun Jan  6 01:10:21 CET 2001  Johnny Mnemonic <johnny@themnemonic.org>
5652
5653         * Rewritten silclog APIs. Globally interesting changes follows:
5654           silc_log_set_files() changed to silc_log_set_file().
5655           silc_log_set_callbacks() changed to silc_log_set_callback().
5656           ROBOdoc documented silclog header file.
5657           SilcLogCb now returns bool to wether inihibit the default
5658           handler or not (to keep the old behaviour return always TRUE).
5659           The new APIs should also fix the problem of the
5660           silcd_error.log file that was written in the current directory.
5661
5662           New features:
5663           Log files streams will remain opened after silc_log_set_file()
5664           call, means less CPU usage notably on high traffic servers.
5665           File streams are now full buffered, and flushed to the disk
5666           every 5 minutes, lesses HD activity and CPU usage.
5667           Messages can be redirected, allowing admins to configure
5668           one single logfile for all server messages.
5669           the silc_log_quick global variable to activate fast-logging.
5670           Affected files lib/silcutil/silclog.[ch]
5671
5672         * Changed some code to conform new silclog APIs. Affected
5673           files are doc/example_silcd.conf.in, silcd/server.c
5674           irssi/src/silc/core/silc-core.c, silcd/serverconfig.[ch],
5675           silcd/silcd.c.
5676
5677         * Fixed a memory leak that could occur in some situations.
5678           Affected file silcd/serverconfig.c.
5679
5680 Sat Jan  5 13:37:29 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5681
5682         * Added the silc_client_del_client to remove the client from
5683           all channels as well.  Affected file lib/silcclient/idlist.c.
5684
5685         * Fixed the client library to correctly remove the client
5686           from all channels when the client entry is being destroyed.
5687           Affected file lib/silcclient/client_notify.c, command.c.
5688
5689         * Added auto-nicking support to the client library.  If the
5690           applicatio now sets client->nickname it will be sent to the
5691           server after connecting by the library.  This way for example
5692           SILCNICK (or IRCNICK) environment variables will have effect
5693           and always change the nickname automatically to whatever
5694           it is wanted.  Affected file lib/silcclient/client.[ch].
5695
5696         * Renamed silc_server_command_bad_chars to the
5697           silc_server_name_bad_chars and moved it to the
5698           silcd/server_util.[ch].  Added also new function
5699           silc_server_name_modify_bad to return nickname that
5700           includes bad characters as new nickname without those
5701           bad characters.  This check and modify is now used in
5702           silc_server_new_client when the username is initially set
5703           as nickname, so it must be checked to be valid nickname.
5704           Affected file silcd/packet_receive.c.
5705
5706         * The nickname length is now taken from the packet for real
5707           and not trusted to strlen() since it clearly can return
5708           wrong length for nickname including bad characters.  This
5709           also applies to channel names.  Affected file silcd/command.c.
5710
5711         * Removed the lib/silcsilm/modules directory.  Modules are now
5712           compiled into the lib/silcsim.  Fixed the copying of the
5713           modules to follow symbolic links in Makefile.am.pre.
5714
5715 Wed Jan  2 18:56:21 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5716
5717         * Fixed silc_string_regexify list creation.  Fixes bugs with
5718           BAN and INVITE commands in server.  The affected file is
5719           lib/silcutil/unix/silcunixutil.c.
5720
5721 Sun Dec 30 13:41:34 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5722
5723         * Removed the command destructor entirely from the server's
5724           command and command reply routines.  It is not needed, and
5725           its usage was buggy and caused crashes.  Affected files are
5726           silcd/command[_reply].[ch].
5727
5728 Fri Dec 28 12:43:22 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5729
5730         * Cancel protocol and NULL sock->protocol if timeout
5731           occurred during protocol.  Affected file silcd/server.c.
5732
5733         * Cancel protocol timeouts always before calling the final
5734           callback, to assure that after final callback is called
5735           no other state will be called for the protocol anymore.
5736           Affected file silcd/protocol.c.
5737
5738         * Print error log if incoming connection configuration could
5739           not be found.  Affected file silcd/server.c.
5740
5741         * Fixed JOIN command to correctly save the founder mode
5742           to the client on normal SILC server, when the channel
5743           was created by the router.  Affected file silcd/command.c.
5744
5745         * Fixed LIST command (hopefully) to send correct reply
5746           packets.  Affected file silcd/command.c.
5747
5748 Thu Dec 20 16:14:52 CET 2001  Pekka Riikonen <priikone@silcnet.org>
5749
5750         * The silc_packet_receive_process now returns FALSE if the
5751           read data was invalid packet, and TRUE if it was ok.
5752
5753           The server now checks that if unauthenticated connection
5754           sends data and its processing fails the server will close
5755           the connection since it could be a malicious flooder.
5756
5757           Affected files lib/silccore/silcpacket.[ch], silcd/server.c.
5758
5759 Wed Dec 19 21:31:25 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5760
5761         * Make sure the warning about error opening a log file is
5762           printed only once and not everytime it fails (produces
5763           too much useless log).  Affected file lib/silcutil/silclog.c.
5764
5765 Wed Dec 19 18:21:51 CET 2001  Johnny Mnemonic <johnny@themnemonic.org>
5766
5767         * Made the silc_server_daemonise() function more readable.
5768           Affected file silcd/server.c.
5769
5770         * Pid file is now optional, the user may comment it out from
5771           the config file. Removed define SILC_SERVER_PID_FILE, we
5772           don't need a default any longer.  Affected file
5773           configure.in.pre, lib/Makefile.am.pre.
5774
5775         * Make some use of the pid file. The server now dies at startup
5776           if it detects a valid pid file on his path. The server would
5777           die anyway in this circumstance, because of the bind() failure.
5778           Affected file silcd/silcd.c.
5779
5780         * No longer compiling lib/dotconf.
5781
5782 Mon Dec 17 18:24:27 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5783
5784         * Fixed JOIN command parsing not to crash.  Affected file
5785           lib/silcclient/command.c.
5786
5787         * Fied the NICK_CHANGE notify to add the new client entry
5788           even it is resolved.  This removes an <[unknown]> nick
5789           thingy bug in the client.  Affected file is
5790           lib/silcclient/client_notify.c.
5791
5792         * Do not try to allocate 0 bytes (efence does not like it)
5793           in lib/silccore/silccomand.c when encoding payload.
5794
5795         * Do not take IRCNICK as nickname in Irssi SILC client since
5796           it is not possible to set nickname before hand connecting
5797           the server (TODO has an entry about adding auto-nicking
5798           support).
5799
5800         * Changed the silc_server_command_pending to check whether
5801           there already exists an pending entry with the specified
5802           command, command identifier and pending callback.  This is
5803           to fix IDENTIFY and WHOIS related crashes that may register
5804           multiple pending commands with same identifier.  Affected
5805           file silcd/command.c.
5806
5807         * Fixed the server to reconnect to the router even if it
5808           was already reconnecting and EOF was received.  This to
5809           fix a possibility that the server wouldn't ever try to
5810           auto-reconnect to the router.  Affected file silcd/server.c.
5811
5812 Sat Dec 15 20:31:50 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5813
5814         * Fixed the server's password authentication to use the
5815           length of the locally saved password, and not the one
5816           sent in the packet.  Affected file silcd/protocol.c.
5817
5818         * Fixed same password authentication problem in the
5819           Authentication Payload handling routines in
5820           lib/silccore/silcauth.c.
5821
5822         * Yet another password authentication problem fixed with
5823           channel password handling in silcd/command.c.
5824
5825 Mon Dec 10 19:57:40 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5826
5827         * If first character of string in silc_parse_userfqdn is '@'
5828           then do not parse it.  Affected file is
5829           lib/silcutil/silcutil.c.
5830
5831 Sun Dec  9 22:18:50 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5832
5833         * Fixed minor bug in IDENTIFY command reply sending, which
5834           caused various weird problems during JOIN when it was
5835           resolving names for users.  Affected file silcd/command.c.
5836
5837 Sun Dec  9 19:18:41 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5838
5839         * Fixed the IDENTIFY command reply sending to chech better valid
5840           clients.  It was possible to send incomplete list of replies.
5841           Affected file silcd/command.c.
5842
5843 Sat Dec  8 15:58:31 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5844
5845         * Added silc_client_command[s]_[un]register functions now to
5846           dynamically register the commands in client library.  Removed
5847           the static table of commands.  This allows the client library
5848           to call commands without causing the application to know about
5849           what commands library has called.
5850
5851           Removed the INFO command reply kludge to detect when the command
5852           was called by library.  Now library use its own command reply
5853           function for INFO command.
5854
5855           Added function silc_client_command_call to call a command.
5856           Application can use it to call command, not access the structure
5857           directly.
5858
5859           Now all commands that are sent by the client library (not
5860           explicitly sent by application) use own command reply functions.
5861
5862           Affected files around lib/silcclient/ and in
5863           irssi/src/silc/core/.
5864
5865         * Fixed the WHOIS command reply sending to chech better valid
5866           clients.  It was possible to send incomplete list of replies.
5867
5868           Fixed the WHOIS and IDENTIFY to send the request to router
5869           if normal server did not do it and did not find any results.
5870
5871           Affected file silcd/command.c.
5872
5873 Thu Dec  6 17:21:06 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5874
5875         * Moved the internal data from SilcClient context into its
5876           own file, not accesible to application.  Affected files
5877           lib/silcclient/client.h and lib/silcclient/client_internal.h,
5878           and other files in client library.
5879
5880 Thu Dec  6 10:37:55 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5881
5882         * Added doc/examples installation target in Makefile.am.pre.
5883           A patch by salo.
5884
5885 Tue Dec  4 17:43:19 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5886
5887         * If NO_SUCH_CLIENT_ID notify is received for WHOIS or IDENTIFY
5888           commands the found client entry will be removed from the
5889           cache, after notifying application about the error.  Affected
5890           file lib/silcclient/command_reply.c.
5891
5892         * Changed the /MSG to check for exact nickname user gave, and
5893           not let `nick' match `nick@host' if it is only one found.  Now,
5894           user must type the exact nickname (like nick@host2) even if
5895           there are no more than one same nicks found.  This is to avoid
5896           a possibility of sending nickname to wrong nickname since
5897           `nick' could match `nick@host'.  Affected file is
5898           irssi/src/core/silc-servers.c.
5899
5900 Mon Dec  3 18:49:45 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5901
5902         * Do not print "you are now server operator" or similar when
5903           giving /away command.  Affected files are
5904           irssi/src/silc/core/client_ops.c, silc-servers.h.
5905
5906         * Made the silc_server_command_pending_error_check to send
5907           the same command reply payload it received back to the
5908           original sender of the command.  This way all arguments
5909           that was received by the server will be received by the
5910           client too.  Affected file silcd/command.c.
5911
5912         * Added the silc_idcache_add to return the created cache entry
5913           to a pointer.  Affected file lib/silccore/silcidcache.[ch].
5914
5915         * Add global clients to expire if they are not on any channel.
5916           This is because normal server will never know if they signoff
5917           if they are not on any channel.  The cache expiry will take
5918           case of these entries.  This is done by normal servers only.
5919           The affected files are silcd/command_reply.c,
5920           silcd/idlist.[ch], silcd/server and silcd/packet_receive.c.
5921
5922         * If server receives invalid ID notification for WHOIS or
5923           IDENTIFY and the ID exists in the lists, it is removed.
5924           Affected file silcd/command_reply.c.
5925
5926         * If NO_SUCH_CLIENT_ID is received for WHOIS or IDENTIFY command
5927           in client then client entry that it matches is searched and
5928           the nickname is printed on the screen for user.  Affected
5929           file irssi/src/silc/core/client_ops.c.
5930
5931 Mon Dec  3 11:56:59 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5932
5933         * Use cache entry expire time in the LIST command reply to
5934           purge old entries from the cache after the LIST command
5935           reply has been received.  This way we don't have non-existent
5936           entries in the cache for too long.  Affected file is
5937           silcd/command_reply.c.
5938
5939 Sun Dec  2 23:29:07 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5940
5941         * If we are normal server, and we've not resolved client info
5942           in WHOIS or IDENTIFY from router, and it is global client,
5943           we'll check whether it is on some channel.  If it is not
5944           then we cannot be sure about its validity and will resolve it
5945           from router.  Fixes a bug in WHOIS and IDENTIFY.  Affected
5946           file silcd/command.c.
5947
5948         * Search channel by name (if possible) rather than by ID
5949           in IDENTIFY command's command reply.  Affected file is
5950           silcd/command_reply.c.
5951
5952 Sun Dec  2 13:48:46 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5953
5954         * Distribute to the channel passphrase in CMODE_CHANGE notify.
5955           Updated specs and implemented it.  Affected file silcd/command.c,
5956           silcd/packet_send.c and silcd/packet_receive.c.
5957
5958         * Implemented the <founder auth> payload handling in the JOIN
5959           command.  If provided all conditions for channel joining
5960           except requirement to provide correct passphrase can be
5961           overrided by the channel founder.  Updated the protocol specs.
5962           Affected file silcd/command.c.
5963
5964           Added support for founder auth in JOIN command in client
5965           library.  Fixed the parsing of the JOIN command now to support
5966           all options as they should be.  The affected file is
5967           lib/silcclient/command.c.
5968
5969         * Optimized the WHOIS and IDENTIFY commands to send the request
5970           to router only if it includes nicknames or other names.  If
5971           they include only IDs then check the local cache first before
5972           routing.  Affected file is silcd/command.c.
5973
5974         * Added channels topic announcements.  Affected file is
5975           silcd/packet_receive.c and silcd/server.c.
5976
5977         * Fixed the silc_server_send_notify_topic_set to really destine
5978           the packet to channel.  Affected file silcd/packet_send.c.
5979
5980         * Fixed a crash in CHANNEL_CHANGE notify handling in the client
5981           library.  Affected file lib/silcclient/client_notify.c.
5982
5983         * Added UMODE announcements.  Affected file silcd/server.c.
5984
5985 Sat Dec  1 12:52:39 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5986
5987         * Memory leak fixes in:
5988
5989           lib/silcutil/silcsockconn.c
5990           lib/silcske/silcske.c
5991           lib/silcske/groups.c
5992           lib/silccrypt/rsa.c
5993           lib/silccrypt/silcpkcs.c
5994           lib/silccore/silccommand.c
5995           lib/silccore/silcidcache.c
5996           silcd/idlist.c
5997           silcd/packet_send.c
5998           silcd/command.c
5999
6000         * ROBOdoc documented the lib/silcske/groups.h file and a
6001           bit changed the interface for better.
6002
6003 Thu Nov 29 22:12:50 EET 2001  Pekka Riikonen <priikone@silcnet.org>'
6004
6005         * Update the client entry context in the ID cache after
6006           nick change.  Affected file lib/silcclient/command.c.
6007           Fixes the CUMODE command when regaining founder privileges,
6008           and a little WHOIS problem.
6009
6010         * Fixed silc_net_gethostbyname to correctly call the
6011           inet_ntop.  Affected file lib/silcutil/silcnet.c.
6012
6013 Thu Nov 29 19:31:23 EET 2001  Pekka Riikonen <priikone@silcnet.org>'
6014
6015         * Added IPv6 support checking to the configure.in.pre, added
6016           also --enable-ipv6 option to override the check.  Affected
6017           file configure.in.pre.
6018
6019         * The silc_thread_create now calls the start function
6020           directly if threads support is not compiled in.  Removes
6021           ugly #ifdef's from generic code.  Affected files are
6022           lib/silcutil/unix/silcunixthread, win32/silcwin32thread.c.
6023
6024         * Added silc_net_gethostby[name/addr]_async to asynchronously
6025           resolve.  Affected files are lib/silcutil/silcnet.[ch].
6026
6027         * Added support for rendering IPv6 based server, client and
6028           channel IDs.  Affected file lib/silcutil/silcutil.c.
6029
6030         * Added support for creating IPv6 based server IDs.  Affected
6031           file is silcd/serverid.c.
6032
6033 Wed Nov 28 23:46:09 EET 2001  Pekka Riikonen <priikone@silcnet.org>'
6034
6035         * Added silc_net_gethostby[addr/name] into the
6036           lib/silcutil/silcnet.[ch].  Added IPv6 support to Unix network
6037           routines.  Added silc_net_is_ip[4/6].  Affected file is
6038           lib/silcutil/unix/silcunixnet.c.  All routines that take
6039           address as argument now supports both IPv4 and IPv6 addresses.
6040
6041 Mon Nov 26 18:09:48 EET 2001  Pekka Riikonen <priikone@silcnet.org>'
6042
6043         * Fixed LIST command reply sending in server.  Affected file
6044           silcd/command.c.
6045
6046         * Server now sends the kicker's client ID in the KICK notify
6047           to the kicked client.  Affected file silcd/command.c.
6048
6049         * The client library now parses the kickers client ID and
6050           UI displays it.  Affected files lib/silcclient/client_notify.c
6051           and irssi/src/silc/core/silc-channels.c, module-formats.c.
6052
6053         * Made all payload parsing function prototypes consistent.
6054           They all take now const unsigned char * and uint32 pair as
6055           the payload data instead of SilcBuffer.  Changes all around
6056           the source tree.  Other unsigned char* -> const unsigned char*
6057           changes around the tree as well.
6058
6059         * Optimized SFTP client and server packet sending not to
6060           allocate new buffer for each packet but to recycle the
6061           first allocated buffer.  Affected files are
6062           lib/silcsftp/sftp_client.c, sftp_server.c, sftp_util.[ch].
6063
6064         * Optimized the SFTP client to use SilcList instead of
6065           SilcDList for requests, because it is faster.  Affected file
6066           is lib/silcsftp/sftp_client.c.
6067
6068         * Moved the ID Payload routines from lib/silccore/silcpayload.[ch]
6069           into lib/silccore/silcid.[ch].
6070
6071           Renamed silcpayload.[ch] into silcargument.[ch].
6072
6073 Mon Nov 26 15:01:53 CET 2001  Pekka Riikonen <priikone@silcnet.org>
6074
6075         * If client entry is deleted with active key agreement
6076           session, abort the session.
6077
6078           The silc_client_abort_key_agreement now calls the completion
6079           callback with new SILC_KEY_AGREEMENT_ABORTED status.
6080
6081           Affected file lib/silcclient/silcapi.h, client_keyagr.c and
6082           idlist.c.
6083
6084 Sun Nov 25 18:01:45 EET 2001  Pekka Riikonen <priikone@silcnet.org>
6085
6086         * Don't use __restrict in older GCC's.  Affected file is
6087           lib/silcmath/mpi/mpi-priv.h.  A patch by salo.
6088
6089         * silc_net_localhost now attempts to reverse lookup the
6090           IP/hostname.  Affected file lib/silcutil/silcnet.c.
6091
6092         * Defined <founder auth> argument to the SILC_COMMAND_JOIN
6093           command.  It can be used to gain founder privileges at
6094           the same time when joining the channel.
6095
6096           Defined that the SILC_NOTIFY_TYPE_KICKED send the
6097           kicker's client ID as well.  Updated protocol specs.
6098
6099           Defined that the server must send SILC_COMMAND_IDENTIFY
6100           command reply with error status to client who sent
6101           private message with invalid client ID.
6102
6103           Updated the protocol specification.
6104
6105         * Added silc_server_send_command_reply to send any
6106           command reply.  Affected file silcd/packet_send.[ch].
6107
6108         * Added silc_id_payload_encode_data to encode ID payload
6109           from raw ID data.  Affected file lib/silccore/silcpayload.[ch].
6110
6111         * The server now send IDENTIFY command reply with error
6112           status if client ID in private message is invalid.  Affected
6113           file silcd/packet_receive.c.
6114
6115         * Save the server key file with server's IP address in
6116           the filename instead of hostname.  The affected file is
6117           irssi/src/silc/core/client_ops.c.
6118
6119 Sat Nov 24 20:08:22 EET 2001  Pekka Riikonen <priikone@silcnet.org>
6120
6121         * Typo fixes in irssi/src/fe-common/silc/module-formats.c.
6122           A patch by Sunfall.
6123
6124         * Added libtool support for compiling shared objects in
6125           lib/silcsim.  Affected file configure.in.pre and
6126           lib/silcsim/Makefile.am.  Original patch by cras.
6127
6128 Fri Nov 23 23:30:59 EET 2001  Pekka Riikonen <priikone@silcnet.org>
6129
6130         * Pid file configuration, and server's config file fixes
6131           patch by toma.  Updated CREDITS file.
6132
6133 Sun Nov 18 01:34:41 EET 2001  Pekka Riikonen <priikone@silcnet.org>
6134
6135         * Fixed silc_client_channel_message to not try to decrypt
6136           the message twice if it resolved the destination client
6137           information.  This could cause of dropping one channel
6138           message.  Affected file lib/silcclient/client_channel.c.
6139
6140 Wed Nov 14 23:44:56 EET 2001  Pekka Riikonen <priikone@silcnet.org>
6141
6142         * Added silc_client_run_one into lib/silcclient/silcapi.h and
6143           lib/silcclient/client.c. This function is used when the SILC
6144           Client is run under some other scheduler, or event loop or
6145           main loop.  On GUI applications, for example this may be
6146           desired to used to run the client under the GUI application's
6147           main loop.  Typically the GUI application would register an
6148           idle task that calls this function multiple times in a second
6149           to quickly process the SILC specific data.
6150
6151 Wed Nov 14 19:16:52 CET 2001  Johnny Mnemonic <johnny@themnemonic.org>
6152
6153         * Fixed silc_server_drop() for dropping the supplementary
6154           groups as well, this could cause a security hole on some
6155           systems.
6156
6157 Wed Nov 14 16:22:25 EET 2001  Pekka Riikonen <priikone@silcnet.org>
6158
6159         * __pid_t -> pid_t in lib/silccrypt/silcrng.c.  A patch by
6160           johnny.
6161
6162         * Write PID file after dropping privileges.  Added -F option
6163           to run server on foreground.  A patch by debolaz.
6164           Affected files silcd/server.c, silcd/silcd.c.
6165
6166         * Fixed MOTD to return the MOTD file server name.  Affected
6167           file silcd/command.c.
6168
6169         * Added INFO command reply handling to the Irssi SILC Client.
6170           Affected file irssi/src/silc/core/client_ops.c.
6171
6172 Wed Nov 14 00:18:08 EET 2001  Pekka Riikonen <priikone@silcnet.org>
6173
6174         * Fixed the silc_idcache_list_* routines to really support
6175           the dynamic list.  Fixes a crash.  Affected file is
6176           lib/silccore/silcidcache.c.
6177
6178         * Fixed the LIST command reply to really call LIST command's
6179           pending callbacks.  Affected file silcd/command_reply.c.
6180
6181 Tue Nov 13 00:49:17 EET 2001  Pekka Riikonen <priikone@silcnet.org>
6182
6183         * Update conn->local_entry->nickname after giving NICK
6184           command.  Affected file lib/silcclient/command.c.
6185
6186 Sun Nov 11 23:43:02 PST 2001  Brian Costello <bc@wpfr.org>
6187
6188         * Added the [pid] option to the silcd configuration file
6189
6190           Affected files: serverconfig.[ch] and silcd.c
6191
6192 Sun Nov 11 23:56:39 EET 2001  Pekka Riikonen <priikone@silcnet.org>
6193
6194         * Save fingerprint in WHOIS command reply in server.
6195           Affected file silcd/command_reply.c.
6196
6197         * Fixed NICK commands pending callback registration.
6198           Affected file lib/silcclient/command.c.
6199
6200 Sun Nov 11 10:49:10 EET 2001  Pekka Riikonen <priikone@silcnet.org>
6201
6202         * Use ++server->cmd_ident when sending commands in server,
6203           instead of random number.  Affected file silcd/command.c.
6204
6205         * Fixed GETKEY command reply to call actually GETKEY pending
6206           command callbacks.  Affected file silcd/command_reply.c.
6207
6208         * A bit stricter check for nicknames.  Check for same nickname
6209           in NICK command also.  Affected file silcd/command.c.
6210
6211         * Do not call INFO command everytime client ID changes, only
6212           during first connecting.  Affected file lib/silcclient/client.c.
6213
6214         * Set the new nickname only after successful command reply for
6215           NICK command is returned by server.  Affected file
6216           lib/silcclient/command.c.
6217
6218         * Remove nicknames from nicklist during server_signoff notify.
6219           Should fix /NAMES bit more.  The affected file is
6220           irssi/src/silc/core/silc-channels.c.
6221
6222         * Added `fingerprint' field to the SilcIDListData in the
6223           silcd/idlist.h to hold the fingerprint of the client's
6224           public key.
6225
6226           Send the fingerprint of the client's public key in WHOIS
6227           command reply.
6228
6229           Affected files silcd/command.c, and silcd/idlist.[ch].
6230
6231         * Added silc_fingerprint into lib/silcutil/silcutil.[ch] to
6232           create fingerprint from given data.
6233
6234         * Show the fingerprint of the client's public key in WHOIS.
6235           Affected files irssi/src/module-formats.[ch] and
6236           irssi/src/silc/core/client_ops.c.
6237
6238         * Format the multiple same nicknames also during JOIN and
6239           NICK_CHANGE notifys.  Affected file is
6240           lib/silcclient/client_notify.c.
6241
6242         * Do not print error on screen for invalid private message
6243           payload since it can come if someone is sending private
6244           messages with wrong key.  Affected file
6245           lib/silccore/silcprivate.c.
6246
6247         * Fixed multiple concurrent /PING crash.  Affected file
6248           lib/silcclient/command.c.
6249
6250         * Changed the wrong ID encoding.  All IP addresses must be
6251           in MSB first order in encoded format.  They were encoded
6252           wrong and was in LSB format.  Affected files are
6253           silcd/serverid.c, lib/silcutil/silcutil.c.
6254
6255         * Remove silc_net_addr2bin_ne from lib/silcutil/silcnet.[ch].
6256
6257         * Call the `connect' client operation through the scheduler
6258           in case of error.  Affected file lib/silcclient/client.c.
6259
6260         * Call the `failure' client operation even if the error
6261           occurred locally during a protocol.  Affected file is
6262           lib/silcclient/protocol.c.
6263
6264         * Added support of sending LIST command to router from normal
6265           server.  This way normal server can get list of all channels
6266           in the network too.  Fixed the channel list sending in the
6267           server too.  Affected files are silcd/command.c, and
6268           silcd/command_reply.[ch].
6269
6270         * Added silc_server_update_channels_by_server and
6271           silc_server_remove_channels_by_server.  They are used during
6272           disconnection of primary router and in backup router protocol.
6273           Affected file silcd/server_util.[ch], silcd/server.c and
6274           silcd/server_backup.c.
6275
6276         * Fixed channel adding to global list in IDENTIFY command
6277           reply in server.  Affected file silcd/command_reply.c.
6278
6279 Sat Nov 10 21:39:22 EET 2001  Pekka Riikonen <priikone@silcnet.org>
6280
6281         * If the incoming packet type is REKEY or REKEY_DONE process
6282           that packet always synchronously.  Fixes yet another MAC
6283           failed error on slow (dialup) connections.  Affected file
6284           lib/silcclient/client.c and silcd/server.c.
6285
6286 Thu Nov  8 22:21:09 EET 2001  Pekka Riikonen <priikone@silcnet.org>
6287
6288         * Call check_version SKE callback for initiator too.  Affected
6289           file lib/silcske/silcske.c.
6290
6291         * Implemented fix for security hole found in the SKE that was
6292           fixed in the specification few days back; the initiator's
6293           public key is now added to the HASH value computation.
6294           Added backwards support for the old way of doing it too, for
6295           old clients and old servers.  Affected file is
6296           lib/silcske/silcske.c.
6297
6298         * Enabled mutual authentication by default in SKE.  If initiator
6299           is not providing mutual authentication the responder will
6300           force it.  This will provide the proof of posession of the
6301           private key for responder.  The affected files are
6302           lib/silcclient/protocol.c and silcd/protocol.c.
6303
6304         * Do not cache anymore the server's public key during SKE.
6305           We do mutual authentication so the proof of posession of
6306           private key is done, and if the server is authenticated in
6307           conn auth protocol with public key we must have the public
6308           key already.  Affected file silcd/protocol.c.
6309
6310         * Added new global debug variable: silc_debug_hexdump.  If
6311           it is set to TRUE SILC_LOG_HEXDUMP will be printed.  Affected
6312           file lib/silcutil/silclog.[ch].
6313
6314         * Fixed compilation warning due to char * -> const char *.
6315           Affected files lib/silcutil/silcnet.h, and
6316           lib/silccore/silcauth.[ch].
6317
6318 Wed Nov  7 20:43:03 EET 2001  Pekka Riikonen <priikone@silcnet.org>
6319
6320         * Fixed CMODE command when new channel key was created.  If
6321           the creation failed the old key was removed.  Next time giving
6322           same command would crash the server since the old key was
6323           freed already.  Affected file silcd/command.c.
6324
6325         * Fixed the silc_server_announce_get_channels to not crash
6326           on reconnect.  Affected file silcd/server.c.
6327
6328 Wed Nov  7 17:15:07 EET 2001  Pekka Riikonen <priikone@silcnet.org>
6329
6330         * Added silc_log_set_debug_string function to set a regex
6331           string to match for debug output.  Only the function names,
6332           or filenames matching the given debug string is actually
6333           printed.  This way it is possible to filter out those debug
6334           strings that user is not interested in.
6335
6336           Fixed a bug in silc_string_regexify.
6337
6338           Affected files lib/silcutil/silclog.[ch], and
6339           lib/silcutil/unix/silcunixutil.c.
6340
6341         * Changed the -d options in both server and Irssi SILC client
6342           to take the debug string as argument.  Affected files
6343           silcd/silcd.c and irssi/src/silc/core/silc-core.c.
6344
6345 Tue Nov  6 21:31:54 EET 2001  Pekka Riikonen <priikone@silcnet.org>
6346
6347         * Added silc_hash_babbleprint to create a Bubble Babble
6348           Encoded fingerprint.  The encoding is developed by Antti
6349           Huima (draft-huima-babble-01.txt), and it creates human
6350           readable strings out of binary data.  Affected file
6351           lib/silccrypt/silchash.[ch].
6352
6353         * Print the babble print now in addition of fingerprint as well
6354           in Irssi SILC client.  Affected files are
6355           irssi/src/fe-common/silc/module-formats.[ch],
6356           irssi/src/fe-common/silc/core/client_ops.c.
6357
6358 Sun Nov  4 23:37:28 EET 2001  Pekka Riikonen <priikone@silcnet.org>
6359
6360         * Fixed a security problem found in SKE.  The initiator's
6361           public key too is now added to the HASH hash value creation
6362           which is signed by the responder to create the SIGN value.
6363           This will prevent anyone in the middle to lie to the responder
6364           about the initiator's public key.  If this is done now, the
6365           man in the middle will get caught.  Updated the protocol
6366           specification.
6367
6368 Sun Nov  4 11:43:53 EET 2001  Pekka Riikonen <priikone@silcnet.org>
6369
6370         * Better installation directory handling.  Configure module
6371           paths and other paths automatically to example_silc* files
6372           in doc/.  A patch by toma.
6373
6374         * Fixed compiler warning from MPI library, and from SILC RNG.
6375           A patch by johnny.
6376
6377         * Added SILC_SERVER_PID_FILE to define the pid file for server.
6378           It can be configured with ./configure.  A patch by toma.
6379
6380 Sat Nov  3 23:48:23 EET 2001  Pekka Riikonen <priikone@silcnet.org>
6381
6382         * Find correct make to use in prepare-clean.  A patch by
6383           toma.  Affected file prepare-clean.
6384
6385 Sat Nov  3 22:04:00 PST 2001  Brian Costello <bc@mksecure.com>
6386
6387         * Added irssi variables use_auto_addr, auto_bind_ip,
6388           auto_bind_port and auto_public_ip.
6389
6390         * Changed the interface for silc_client_send_key_agreement
6391           in lib/silcclient/silcapi.h
6392
6393         Affected files:
6394
6395          irssi/src/silc/core/silc-core.c
6396          irssi/config
6397          lib/silcclient/silcapi.h
6398          irssi/src/silc/core/silc-channels.c
6399          lib/silcclient/client_keyagr.c
6400          irssi/docs/help/key
6401
6402 Sat Nov  3 17:48:55 EET 2001  Pekka Riikonen <priikone@silcnet.org>
6403
6404         * Added silc_pkcs_public_key_compare to compare two
6405           public keys.  Affected file lib/silccrypt/silcpkcs.[ch].
6406
6407         * Check that the client who set the founder mode on the
6408           channel is the same client that is giving the founder
6409           mode to itself.  It is done by comparing the saved public
6410           key (it is saved even in the authentication is passphrase).
6411           Affected file silcd/command.c.
6412
6413 Fri Nov  2 18:52:08 EST 2001  Pekka Riikonen <priikone@silcnet.org>
6414
6415         * Do not process packet for disconnected socket connection.
6416           Affected file lib/silccore/silcpacket.c.
6417
6418         * Process the DISCONNECT packet through scheduler in the
6419           client library.  Affected file lib/silcclient/client.c.
6420
6421         * Fixed the silc_client_packet_parse to not to increase
6422           the packet sequence number if the conn->sock and the
6423           current socket connection is not same.  This can happen
6424           for example during key agreement when the conn includes
6425           multiple socket connections (listeners).  Affected file
6426           lib/silcclient/client.c.
6427
6428         * The sender of the file transfer request now provides also
6429           the pointer (listener) for the key exchange protocol.  If
6430           the listener cannot be created then it sends empty key
6431           agreement and lets the receiver provide the listener.
6432
6433           Added `local_ip' and `local_port' arguments to the
6434           silc_client_file_send.  If they are provided they are used,
6435           if not then it will attempt to find local IP address, if
6436           not found or bind fails then the remote client will provide
6437           the listener.
6438
6439           Affected files are lib/silcclient/client_ftp.c and
6440           lib/silcclient/silcapi.h.
6441
6442         * Extended the FILE SEND command to support defining the
6443           local IP and port for key exchange listener.  They are
6444           optional.  Affected file irssi/src/silc/core/silc-servers.c.
6445
6446 Thu Nov  1 22:10:07 EST 2001  Pekka Riikonen <priikone@silcnet.org>
6447
6448         * Defined to WHOIS command reply the sending of fingerprint
6449           of the client's public key (if the proof of posession of the
6450           corresponding private key is verified by the server).
6451           Updated to the protocol specification.
6452
6453         * Added support of receiving the client's public key's
6454           fingerprint in command reply in client library.  Affected
6455           file is lib/silcclient/command_reply.c, and
6456           lib/silcclient/idlist.[ch].
6457
6458 Thu Nov  1 18:06:12 EST 2001  Pekka Riikonen <priikone@silcnet.org>
6459
6460         * Do not send over 128 chars long nickname to the server
6461           in NICK command.  Affected file lib/silcclient/command.c.
6462
6463         * Do not send over 256 chars long channel names to the server
6464           in JOIN command.  Affected file lib/silcclient/command.c.
6465
6466 Tue Oct 30 22:48:59 EST 2001  Pekka Riikonen <priikone@silcnet.org>
6467
6468         * Assure that silc_server_close_connection cannot be called
6469           twice for same socket context.  Affected file is
6470           silcd/server.c.
6471
6472 Tue Oct 30 16:58:14 EST 2001  Pekka Riikonen <priikone@silcnet.org>
6473
6474         * Send error message to application if opening file for
6475           writing during file transfer fails.  Affected file is
6476           lib/silcclient/client_ftp.c.
6477
6478           Remove all file transfer sessions for a client that we're
6479           removing from ID cache.
6480
6481           Affected file is lib/silcclient/client_ftp.c.
6482
6483         * Fixed silc_net_addr2bin to return correct address.  Affected
6484           file lib/silcutil/[unix/win32]/silc[unix/win32]net.c.
6485
6486         * Fixed file transfer session removing on signoff notify.
6487           Affected file irssi/src/silc/core/silc-servers.c.
6488
6489         * Added the SilcClientFileError to be returned in the monitor
6490           callback.  Added NO_SUCH_FILE and PERMISSION_DENIED errors.
6491           Affected file lib/silcclient/silcapi.h.
6492
6493 Mon Oct 29 17:43:04 EST 2001  Pekka Riikonen <priikone@silcnet.org>
6494
6495         * Fixed a crash in silc_client_ftp_free_sessions and
6496           silc_client_ftp_session_free_client.  Affected file
6497           lib/silcclient/client_ftp.c.
6498
6499         * Added `disabled' field in the SilcChannelEntry in the server
6500           to indicate if the server entry is disabled.  Affected file
6501           silcd/idlist.h, silcd/command[_reply].c.
6502
6503         * SILC server adds now /var/run/silcd.pid everytime it is
6504           started.  Affected file silcd/silcd.c.
6505
6506         * Added silc_server_packet_send_clients to send a packet to
6507           the provided table of client entries.  Affected file
6508           silcd/packet_send.[ch].
6509
6510         * Fixed a crash in client resolving in client_prvmsg.c in
6511           client library.  Affected file lib/silcclient/client_prvmsg.c.
6512
6513         * Do not actually remove the client directly from ID cache
6514           during SERVER_SIGNOFF, but invalidate it.  This way we
6515           preserve the WHOWAS info for the client.  Affected file
6516           silcd/server_util.c.
6517
6518         * Fixed SERVER_SIGNOFF notify handling in the server.  The
6519           server is now able to process incoming SERVER_SIGNOFF notify
6520           for a server that it doesn't even know about.  It will remove
6521           the clients provided in the notify.  Affected file
6522           silcd/packet_receive.c.
6523
6524         * Check for partial packet in data queue after every packet that
6525           was found from the queue.  Return and wait for more data if
6526           there is partial data in queue.  Affected file is
6527           lib/silccore/silcpacket.c.
6528
6529 Sun Oct 28 18:46:27 EST 2001  Pekka Riikonen <priikone@silcnet.org>
6530
6531         * Added SilcClietFileError enum to indicate error in
6532           file transfer.  Added SILC_CLIENT_FILE_MONITOR_KEY_AGREEMENT
6533           and SILC_CLIENT_FILE_MONITOR_ERROR new monitor statuses.
6534           Affected files lib/silcclient/silcapi.h and
6535           lib/silcclient/client_ftp.c.
6536
6537         * Check that newsize in silc_buffer_realloc is larger than
6538           the old buffer's size.  Affected file lib/silcutil/silcbufutil.h.
6539
6540         * Added better monitor of file transfers.  It now monitors
6541           key agreement protocol during the file transfer too.  Added
6542           error reporting too.  Affected files
6543           irssi/src/silc/core/silc-servers.c,
6544           irssi/src/fe-common/silc/module-formats.[ch].
6545
6546         * Wrote a help file for FILE command.
6547
6548         * Added silc_rng_global_get_byte_fast to get not-so-secure
6549           random data as fast as possible.  Random data is read from
6550           /dev/urandom if available and from the SILC RNG if not
6551           available.  It is used in padding generation.  Affected file
6552           lib/silccrypt/silcrng.[ch].
6553
6554         * All packets in client library are now processed synchronously.
6555           Optimized packet processing a lot.  Affected file
6556           lib/silcclient/client.c.
6557
6558         * All server connection packets are processing synchronously
6559           now in server, to optimize packet processing.  Affected file
6560           silcd/server.c.
6561
6562         * Include files are installed now only in Toolkit distribution
6563           if make install is given.  Affected files: all Makefile.am's.
6564
6565 Thu Oct 25 22:44:06 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
6566
6567         * Assure that silc_client_notify_by_server_resolve does not
6568           resolve the client information multiple times.  If it cannot
6569           be found by the first it cannot be found at all.  Affected
6570           file lib/silcclient/client_notify.c.
6571
6572         * Fixed WHOWAS command reply calling.  Affected file
6573           lib/silcclient/command_reply.c.
6574
6575         * Removed all references to silc_idlist_get_client from the
6576           Irssi SILC client since that call is internal call used by
6577           the library.  The Irssi SILC client will use now client
6578           retrieval functions found in silcapi.h.
6579
6580         * Fixed a bug in resolving nickname info before sending
6581           private message.  It used freed memory.  Affected file
6582           irssi/src/silc/core/silc-servers.c.
6583
6584 Thu Oct 25 19:04:49 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
6585
6586         * Assure my_channels statistics cannot go negative in server.
6587           Affected files silcd/server.c, silcd/server_util.c.
6588
6589 Wed Oct 24 19:53:05 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
6590
6591         * Upgraded dotconf 1.0.2 to 1.0.6 in lib/dotconf.
6592
6593 Tue Oct 23 13:51:19 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6594
6595         * Win32 Toolkit changes.  Affected files
6596           win32/silc.dsw, win32/libsilc/libsilc.def,
6597           win32/libsilcclient/libsilc.def,
6598           lib/silcutil/silcutil.c, and
6599           lib/sftp/sftp_fs_memory.c.
6600
6601 Mon Oct 22 16:35:05 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
6602
6603         * Added silc_net_localip to return local host's IP address.
6604           Affected file lib/silcutil/silcnet.[ch].
6605
6606         * If key exchange or rekey protocol is active for a connection
6607           parse all packets syncronously since there might be packets
6608           in packet queue that we are not able to process without first
6609           processing packets before them.  Affected file silcd/server,
6610           lib/silcclient/client.c.
6611
6612         * SilcPacketParserCallback now returns TRUE or FALSE to indicate
6613           whether library should continue processing the packet.
6614           Affected file lib/silccore/silcpacket.h.
6615
6616         * Added SilcSFTPMonitor callback, SilcSFTPMonitors and
6617           SilcSFTPMonitorData to SFTP server to monitor various
6618           SFTP client requests.  Affected file lib/silcsftp/silcsftp.h,
6619           lib/silcsftp/sftp_server.c.
6620
6621         * Added silc_file_size to return file size.  Affected file
6622           lib/silcutil/silcutil.[ch].
6623
6624         * Implemented the file transfer support for the client library.
6625           Added preliminary support for simple client to client one-file
6626           transmission.  Affected file lib/silcclient/client_ftp.c,
6627           lib/silccilent/client.[ch].
6628
6629         * Added new local command FILE to the Irssi SILC Client.
6630           It is used to perform the file transfer.  It has subcommands
6631           SEND, RECEIVE, SHOW and CLOSE.  Affected files
6632           irssi/src/silc/core/client_ops.c,
6633           irssi/src/silc/core/silc-server.[ch].
6634
6635 Mon Oct 22 12:50:08 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
6636
6637         * Relay the SILC_PACKET_FTP in the server.  Affected files
6638           silcd/server.c and silcd/packet_receive.c.
6639
6640 Sun Oct 21 20:21:02 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
6641
6642         * Renamed silc_file_read and silc_file_write to functions
6643           silc_file_readfile and silc_file_writefile.  Added function
6644           silc_file_open and silc_file_close.  Affected files
6645           lib/silcutil/silcutil.[ch].
6646
6647 Thu Oct 18 20:58:13 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
6648
6649         * Resolve the client info when received private message or
6650           channel message for a client which nickname we don't know.
6651           Affected files lib/silcclient/client_prvmsg.c and
6652           lib/silcclient/client_channel.c.
6653
6654         * Do not crash in /KEY if client is not connected.  Affected
6655           file irssi/src/silc/core/silc-channels.c.
6656
6657         * Added SilcClientStatus field to the SilcClientEntry in the
6658           lib/silcclient/idlist.h.
6659
6660           Added SILC_CLIENT_STATUS_RESOLVING to mark that the entry
6661           is incomplete and is being resolved, it won't be resolved
6662           twice.
6663
6664           Make sure also that USERS command reply does not resolve
6665           twice information.  Affected file is
6666           lib/silcclient/command_reply.c.
6667
6668           Make sure that silc_client_get_clients_by_list does not
6669           resolve twice same information.
6670
6671         * Check for valid client->id in the silc_server_free_client_data.
6672           Affected file silcd/server.c.
6673
6674         * Fixed /GETKEY nick@server not to crash if the server entry
6675           is not found.  Affected file lib/silcclient/command.c.
6676
6677         * Fixed the silc_server_check_cmode_rights to check the
6678           requested modes correctly.  Affected file silcd/command.c.
6679
6680 Thu Oct 18 12:10:22 CEST 2001  Pekka Riikonen <priikone@silcnet.org>
6681
6682         * Better checks for non-printable chars in nick added.
6683           Affected file silcd/command.c.
6684
6685 Thu Oct 18 09:18:58 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
6686
6687         * Call the silc_server_udpate_servers_by_server in the
6688           primary router that comes back online in the backup resuming
6689           protocol.  Otherwise it routes packets wrong.  Affected file
6690           silcd/server_util.[ch], silcd/server_backup.c.
6691
6692 Wed Oct 17 16:51:18 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
6693
6694         * Added SILC_STR_UI8_[N]STRING[_ALLOC] formats to the
6695           lib/silcutil/silcbuffmt.[ch].
6696
6697         * Redefined the SILC packet header to include the padding
6698           length.  Affected file lib/silccore/silcpacket.[ch].
6699
6700         * Added SILC_PACKET_PADLEN_MAX macro to return the padding
6701           length for maximum padding up to 128 bytes).  Affected
6702           file lib/silccore/silcpacket.h.
6703
6704         * Removed all backwards support for old 0.5.x MAC thingies.
6705           The SILC packet header change makes it impossible to be
6706           backwards compatible.
6707
6708         * Send the ENDING packet with timeout in the backup resuming
6709           protocol.  This is to assure that all routers has connected
6710           to the primary router.  Affected file silcd/server_backup.c.
6711
6712         * Changed the RNG to take the first IV from random data.  It
6713           used to take it from zero actually.  Changed the RNG also
6714           to use /dev/urandom during session.  /dev/random is used
6715           in initialization.  Affected file lib/silccrypt/silcrng.[ch].
6716
6717 Tue Oct 16 20:45:49 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
6718
6719         * Changed the SILC packet header to have the first two bytes
6720           (the packet length) encrypted.  Affected files aroung the
6721           code tree, lib/silccore/silcpacket.[ch].  Removed the
6722           SilcPacketCheckDecrypt callback.  It is not needed anymore
6723           since the silc_packet_receive_process will determine now
6724           whether the packet is normal or special.
6725
6726         * Implemented the unidirectional MAC keys.  Affected files
6727           lib/silcske/silcske.c, silcd/protocol.c and
6728           lib/silcclient/protocol.c.
6729
6730         * Implemented the packet sequence number to the MAC computation.
6731           Affected files lib/silccore/silcpacket.c, silcd/protocol.c,
6732           silcd/packet_send.c, silcd/server.c, lib/silcclient/client.c,
6733           lib/silcclient/protocol.c.
6734
6735 Mon Oct 15 17:42:55 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
6736
6737         * Allow backup router to announce servers.  All servers
6738           announced by backup router are added to the global list
6739           automatically.  Update hte server's socket to our primary
6740           router also when backup router announces a server.
6741           Affected file silcd/packet_receive.c.
6742
6743         * Do not update the client->router in the function
6744           silc_server_udpate_clients_by_server if the client is on
6745           global list.  We might fail to find any specific server
6746           for locally connected clients and local cell clients.  They
6747           should still use the `from' and not `to' as client->router.
6748           This fixes backup router resuming protocol.  Affected file
6749           silcd/server_util.c.
6750
6751         * Decrease channel statistics count only if the channel
6752           deletion worked.  Affected files are silcd/server.c and
6753           silcd/server_util.c.
6754
6755         * Added silc_server_update_servers_by_server to update origin
6756           of all server entries.  Used during backup router protocol.
6757           Affected files silcd/server_util.[ch], silcd/server.c. and
6758           silcd/backup_router.c.
6759
6760         * ROBODoc documented the lib/silccrypt/silchmac.h.  Added new
6761           function silc_hmac_init, silc_hmac_update, silc_hmac_final,
6762           silc_hmac_get_hash and silc_hmac_get_name.  Affected file
6763           lib/silccrypt/silchmac.c.
6764
6765 Sun Oct 14 18:28:22 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
6766
6767         * Assure that router cannot reroute the same channel message
6768           to the sender.  Affected file silcd/packet_receive.c.
6769
6770 Sat Oct 13 12:46:18 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
6771
6772         * Made better checks that the channel message is not sent
6773           to the router it came from.  Affected file is
6774           silcd/packet_send.c.  Fixed memory leak too.
6775
6776         * Announce informations for incoming router connection, but
6777           only after checking if it is replaced by backup router.
6778           Affected file silcd/packet_receive.c.
6779
6780 Fri Oct 12 18:37:24 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
6781
6782         * Fixed the backup resuming protocol to work in multiple
6783           router environment.  Affected file silcd/server_backup.c.
6784
6785         * Route packet only to one router in the function
6786           silc_server_packet_send_to_channel.  Affected file is
6787           silcd/packet_send.c.
6788
6789         * Fixed silc_server_send_notify_dest to set the broadcast
6790           flag.  Fixed the silc_server_send_notify_topic to actually
6791           send the TOPIC_CHANGE notify and not SERVER_SIGNOFF notify.
6792           Affected file silcd/packet_send.c.
6793
6794         * Changed the SFTP Filesystem interface.  Changed the
6795           SilcSFTPFilesystemStruct to SilcSFTPFilesystemOps to include
6796           the filesystem operation function.  The SilcSFTPFilesystem
6797           is now a context that is allocated by all filesystem allocation
6798           functions and it already includes the operations structure
6799           and filesystem specific context.  It is given as argument
6800           now to the silc_sftp_server_start.  This made the interface
6801           a bit cleaner.  Affected file lib/silcsftp/silcsftp[_fs].h,
6802           lib/silcsftp/sftp_fs_memory.c and sftp_server.c.
6803
6804 Thu Oct 11 22:19:26 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
6805
6806         * Changed the backup router adding and getting interfaces
6807           in the server.  The router that will be replaced by the
6808           specified backup router is now sent as argument.  Affected
6809           files silcd/serverconfig.[ch], silcd/backup_router.[ch], and
6810           silcd/server.c.
6811
6812         * Added silc_net_addr2bin_ne to return the binary form of
6813           the IP address in network byte order.  Affected files
6814           lib/silcutil/[unix/win32].silc[unix/win32]net.[ch].
6815
6816 Thu Oct 11 12:14:19 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
6817
6818         * Check for existing server ID in silc_server_new_server
6819           and in silc_server_connect_to_router_final and remove the
6820           old entry if it exists.  Affected file silcd/packet_receive.c,
6821           silcd/server.c.
6822
6823         * Send the channel message always to only one router, either
6824           in upstream or downstream.  Affected file is
6825           silcd/packet_send.c.
6826
6827 Tue Oct  9 17:45:43 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
6828
6829         * Wrote the definition of the backup resuming protocol to the
6830           protocol specification.
6831
6832         * Removed one redundant channel key generation from normal
6833           server during joining procedure.  Removed one redundant
6834           channel key sending from server to router during joining
6835           procedure.  Affected file silcd/command.c.
6836
6837         * Made minor bugfixes to the backup router resuming protocol.
6838           Affected file silcd/server_backup.c, server.c.
6839
6840 Mon Oct  8 16:47:42 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
6841
6842         * Added --disable-asm configuration option.  Affected files
6843           configure.in.pre, lib/silcmath/mpi/configure.in.  A patch
6844           by salo.
6845
6846         * Implemented the backup resuming protocol that is used to
6847           resume the primary router position in the cell after the
6848           primary router comes back online.  Affected files
6849           silcd/server_backup.[ch], silcd/server, silcd/packet_receive.c,
6850           and silcd/server_util.[ch].
6851
6852 Sun Oct  7 12:29:25 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
6853
6854         * Sleep two (2) seconds after sending QUIT command to server.
6855           Affected file lib/silcclient/command.c.
6856
6857         * Assure that if outgoing data buffer is pending do not force
6858           send any data.  Affected file silcd/packet_send.c.
6859
6860         * Assure that if outgoing data buffer is pending do not force
6861           send any data.  Affected file lib/silcclient/client.c.
6862
6863         * Implemented the backup router support when the primary router
6864           goes down.  The servers and routers can now use the backup
6865           router as new primary router without loosing connectivity.
6866
6867 Sat Oct  6 21:18:54 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
6868
6869         * Added new SILC_IDLIST_STATUS_DISABLED flag for entries
6870           in the server to indicate disabled entry.  All data read
6871           from the connection will be ignored and no data is sent
6872           for entry that is disabled.  Affected files are
6873           silcd/idlist.h, silcd/server.c.
6874
6875 Fri Oct  5 00:03:29 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
6876
6877         * Created SFTP client and server test programs in the
6878           lib/silcsftp/tests directory.
6879
6880 Wed Oct  3 23:31:42 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
6881
6882         * Implemented memory filesystem (virtual filesystem) for
6883           SFTP server.  Affected file lib/silcsftp/silcsftp_fs.h,
6884           sftp_fs_memory.c.
6885
6886 Sun Sep 30 22:10:57 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6887
6888         * Implemented the SFTP (SSH File Transfer Protocol) to the
6889           lib/silcsftp.  It includes SFTP client and SFTP server
6890           implementations.
6891
6892 Sun Sep 30 10:35:44 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6893
6894         * Moved lib/silccore/silcprotocol.[ch] to the
6895           lib/silcutil library.
6896
6897         * Added silc_buffer_format_vp and silc_buffer_unformat_vp to
6898           take variable argument list pointer as argument.  Affected
6899           file lib/silcutil/silcbuffmt.[ch].
6900
6901         * Added silc_buffer_set function that is used to set data
6902           to a SilcBuffer that is not allocated at all (SilcBufferStruct).
6903           Affected file lib/silcutil/silcbuffer.h.
6904
6905         * Changed various routines in the core library to use the new
6906           silc_buffer_set instead of allocating new buffer only for
6907           temporary purposes.
6908
6909         * Added 64-bit value formatting and unformatting support to the
6910           silc_buffer_[un]format routines.  Affected file is
6911           lib/silcutil/silcbuffmt.[ch].
6912
6913           Added also 64-bit macros: SILC_GET64_MSB and SILC_PUT64_MSB,
6914           to includes/bitmove.h.
6915
6916 Fri Sep 28 21:30:10 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6917
6918         * Fixed channel user mode saving in client library.  Affected
6919           file lib/silcclient/command[_reply].c.
6920
6921 Thu Sep 27 22:52:30 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6922
6923         * Defined the file transfer to the SILC Protocol.  Added
6924           new packet type SILC_PACKET_FTP and defined File Transfer
6925           Payload.  The mandatory file transfer protocol is SFTP
6926           (SSH File Transfer Protocol).  Affected file in addition
6927           of the internet draft is lib/silccore/silcpacket.h.
6928
6929         * Deprecated the SILC_PACKET_CELL_ROUTERS and defined new
6930           packet SILC_PACKET_RESUME_ROUTER instead.  The new packet
6931           is used as part of backup router protocol when the primary
6932           router of the cell is back online and wishes to resume
6933           the position as primary router.
6934
6935         * Redefined the MAC generation keys in the protocol.  The
6936           same key is not used anymore in both direction.  Both
6937           direction will now use different keys for sending and
6938           receiving.  This fixes a potential security flaw.  This
6939           change causes incompatibilities in the protocol.
6940
6941         * Redefined also the MAC computation from the packet.
6942           An packet sequence number is now added to the MAC
6943           computation.  This prevents possible replay attacks against
6944           the protocol.  This change too causes incompatibilities
6945           in the protocol.
6946
6947           Added `sequence' field to the SilcPacketContext to hold
6948           the current sequence number for the packet.
6949
6950 Wed Sep 26 20:15:22 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6951
6952         * Added `created' field to the SilcIDListData in the file
6953           silcd/idlist.h to indicate the time when the entry was
6954           created.
6955
6956         * Added `created' field to the SilcChannelEntry too.  Affected
6957           file silcd/idlist.h.
6958
6959         * Added `creation_time' aguments to all the announcement functions
6960           in the server.  If it is provided then only the entries that
6961           was created after the provided time frame are actually
6962           announced.  Affected file silcd/server.[ch].
6963
6964         * The protocol says that the Channel ID's IP address must be
6965           based on the router's IP address.  Added check for this in
6966           the silc_server_new_channel when processing incoming New Channel
6967           Payload.  Affected file silcd/packet_receive.c.
6968
6969         * Print out the correct version with --version in SILC client.
6970           Affected file irssi/src/silc/core/silc-core.c.
6971
6972 Mon Sep 24 17:19:00 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6973
6974         * Fixed WHOWAS command to check for completnes of the client
6975           entry always, not just when the command is coming from client.
6976           Affected file silcd/command.c.
6977
6978         * Added new function silc_server_packet_queue_purge to purge the
6979           outgoing data queue to the network.  After the function returns
6980           it is guaranteed that the outgoing packet queue is empty.
6981           Affected file silcd/packet_send.[ch].
6982
6983         * Purge the outgoing packet queue in the rekey protocol's final
6984           callback to assure that all rekey packets go to the network
6985           before quitting the protocol.  Affected file silcd/server.c.
6986
6987         * Added silc_client_packet_queue_parse as similar function as
6988           in server to the client library.  The affected file is
6989           lib/silcclient/client.c.
6990
6991 Sun Sep 23 15:15:53 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6992
6993         * Splitted silcd/server.c and created silcd/server_util.[ch]
6994           for utility functions.
6995
6996         * Added new socket flag SILC_SF_DISABLED to indicate that the
6997           connection is open but nothing can be sent to or received from
6998           the connection.  Affected file lib/silcutil/silsockconn.[ch].
6999           The checking for disabled socket is checked in the low level
7000           silc_socket_write and silc_socket_read functions.
7001
7002 Thu Sep 20 23:11:28 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7003
7004         * Allow only nicknames and channel names that fits into the
7005           7-bit unsigned char ASCII set.  Affected file silcd/command.c.
7006
7007 Thu Sep 20 18:04:12 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7008
7009         * When processing JOIN command reply in server check that if
7010           the channel exists in our global list we'll move it the local
7011           list.  Affected file silcd/command_reply.c.
7012
7013         * Fixed the check whether client is joined on the channel already
7014           in JOIN command.  Affected file lib/silcclient/command.c.
7015
7016         * Fixed the JOIN command reply to check whether the channel
7017           already exists.  Affected file lib/silcclient/command_reply.c.
7018
7019 Wed Sep 19 22:58:32 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7020
7021         * Added silc_ske_status_string to map the SKE error numbers
7022           to readable strings.  The affected files are
7023           lib/silcske/silcske[_status].[ch].
7024
7025 Tue Sep 18 22:50:41 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7026
7027         * Do not show the private channels on the WHOIS channel list
7028           as it is not allowed by the protocol.  The affected file is
7029           silcd/server.c.
7030
7031 Sun Sep 16 12:32:58 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7032
7033         * Assure that the packet length digged from the actual packet
7034           is something sensible in the silc_packet_decrypt_rest_special
7035           in lib/silccrypt/silcpacket.c.
7036
7037         * Free and NULL the allocated pointer in silc_hmac_alloc if
7038           the HMAC allocation fails.  The affected file is
7039           lib/silccrypt/silchmac.c.
7040
7041         * Print the selected security properties to the log files in
7042           the server.  Affected file silcd/protocol.c.
7043
7044         * Add SKE's reference counter even if calling the completion
7045           callback manually.  Otherwise it goes negative, although it
7046           does not cause any problems.  The affected file is
7047           lib/silcske/silcske.c.
7048
7049         * Remove the client entry with short timeout after giving the
7050           KILL command.  Affected file lib/silcclient/command.c.
7051
7052         * Fixed to send error reply in WHOIS and IDENTIFY commands in
7053           case all found clients are already disconnected (WHOWAS would
7054           found them) in the server.  Affected file silcd/command.c.
7055
7056         * Update the last_receive (time of last data received) to be
7057           updated only when received private or channel message so that
7058           the idle time showed in WHOIS makes more sense.
7059
7060         * Added boolean field `valid' in to the SilcClientEntry in the
7061           client library to indicate whether the entry is valid or not.
7062           This fixes the nickname change bug on channel when changing
7063           the nickname to be same than the old (like nick to Nick) the
7064           nickname formatter doesn't set the new nick anymore to Nick@host.
7065           Affected file lib/silcclient/idlist.[ch].
7066
7067         * Now actually fixed the nickname changing on disconnection.
7068           Added new function silc_change_nick to the Irssi SILC Client.
7069           Affected file irssi/src/silc/core/client_ops.c,
7070           irssi/src/silc/core/silc-nicklist.[ch].
7071
7072 Sat Sep 15 13:29:17 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7073
7074         * Check that the public key exists in the GETKEY command before
7075           trying to encode it.  Affected file silcd/command.c.
7076
7077         * Print some notifications on received public keys with GETKEY
7078           command in the Irssi SILC Client.  Affected files are
7079           irssi/src/fe-common/silc/module-formats.[ch],
7080           irssi/src/silc/core/client_ops.c.
7081
7082         * Use IDENTIFY command to resolve the server information in the
7083           GETKEY command instead of INFO command.  Affected file
7084           lib/silcclient/command.c.
7085
7086         * All command reply functions in the client library now calls
7087           the pending command reply callbacks even if an error has
7088           occurred.  The server has done this a long time and now it was
7089           time to move the client library to this as well.  Now all
7090           errors can be delivered back to the pending command reply
7091           callbacks if necessary.  Affected files are
7092           lib/silcclient/command[_reply].[ch].
7093
7094         * Change the nickname on disconnection back to the username
7095           because in reconnect the server will enforce it to it anyway.
7096           Affected file irssi/src/silc/core/silc-servers.c.
7097
7098         * Fixed a config file parsing bug in the Irssi SILC client.
7099           Affected file irssi/src/silc/core/clientconfig.c.
7100
7101 Thu Sep 13 23:11:18 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7102
7103         * When printing the channel mode on JOIN, verify that the
7104           channel key and channel's HMAC are valid.  Affected file
7105           irssi/src/silc/core/client_ops.c.
7106
7107 Thu Sep 13 20:24:52 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7108
7109         * Added defines SILC_DEFAULT_CIPHER, SILC_DEFAULT_HMAC,
7110           SILC_DEFAULT_HASH and SILC_DEFAULT_PKCS in the file
7111           lib/silccrypt/[silccipher.h|silchmac.h|silchash.h|silcpkcs.h].
7112
7113         * Removed channel key rekey task deleting from the function
7114           silc_server_save_channel_key.  Affected file silcd/server.c.
7115           Added explicit timeout task context instead that is used to
7116           delete the task if we are registering a new task before the
7117           new task has elapsed.
7118
7119         * When channel key rekey occurs the client library now saves
7120           the old channel key for a short period of time (10 seconds) and
7121           is able to use it in case some is still sending channel
7122           messages encrypted with the old key after the rekey.  Affected
7123           file lib/silcclient/[idlist.h|client_channel.c].
7124
7125 Sun Sep  9 15:49:16 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7126
7127         * Added check to the silc_server_new_id_real to not accept
7128           new ID if it is the sender's own ID.  Affected file is
7129           silcd/packet_receive.c.
7130
7131         * Assure that we do not announce ourself or the one we've
7132           sending our announcements when we're router and are announcing
7133           servers to our primary router.  Affected file silcd/server.c.
7134
7135         * Fixed silc_server_command_identify_check_client to assemble
7136           correct WHOIS packet.  It send corrupted WHOIS packet and
7137           caused problem with router to router connections.  Affected
7138           file silcd/command.c.
7139
7140           Fixed also silc_server_command_whois_check the same way
7141           as for the IDENTIFY command.
7142
7143         * Added new SilcIDListStatus to the server in the SilcIDListData
7144           structure.   The status now includes the current status of
7145           the entry (like registered, resolved etc.).  Affected file
7146           silcd/idlist.[ch].  Defined a bunch of different status types
7147           as well.  This replaced the old boolean registered field as well.
7148
7149           Added resolve_cmd_ident field to the SilcClientEntry structure
7150           too so that if the entry is for example being resolved so
7151           another command may attach to the same pending command reply
7152           without requiring to resolve the same entry again.  This concept
7153           should optimize the WHOIS and the IDENTIFY resolving under
7154           heavy load by taking away unnecessary resolving for entries
7155           that are being resolved already.
7156
7157           Added support for adding multiple pending commands for one
7158           command idenfier.  Affected file silcd/command[_reply].[ch].
7159
7160         * Fixed WHOIS and IDENTIFY save to remove the cache entry
7161           before deleting the data.  Otherwise the hash table will have
7162           freed data in comparison functions.  Affected file is
7163           silcd/command_reply.c.
7164
7165         * Fixed silc_idlist_replace_client_id to add the new entry to
7166           the cache with NULL nickname.  Otherwise there will be invalid
7167           memory as the nickname after the nickname is freed.  Affected
7168           file silcd/packet_receive.c.
7169
7170         * Fixed the silc_idlist_get_clients_by_hash.  The entries was
7171           saved into wrong slots because the previous number of entries
7172           was not taken into account.  Affected file silcd/idlist.c.
7173           Fixed same thing in silc_idlist_get_clients_by_nickname too.
7174
7175         * If we are router and we receive JOIN notify to a channel that
7176           does not have any users then notified client is marked as the
7177           channel founder, as it is it.  The affected file is
7178           silcd/packet_receive.c
7179
7180         * Added to the extended hash table API's table_del_*ext functions
7181           the destructor as argument too, so that the caller can decide
7182           which destructor to use or whether to use destructor at all.
7183           Affected file lib/silcutil/silchashtable.[ch].
7184
7185         * Fixed ID Cache purging.  It actually deleted the entries from
7186           the hash table after the data was freed.  The hash table ended
7187           up comparing freed memory.  The affected file is
7188           lib/silccore/silcidcache.c.
7189
7190 Sat Sep  8 10:22:10 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7191
7192         * Fixed Irssi SILC client's KILL command's HELP syntax.
7193
7194         * The USERS command now resolves the detailed user information
7195           if the userinfo field is missing.  Affected file is
7196           lib/silcclient/command_reply.c.
7197
7198         * Do not print error in silc_file_read if the read file does
7199           not exist.  Just silently return NULL.  Affected file is
7200           lib/silcutil/silcutil.c.
7201
7202         * Fixed the silc_log_output to not wine about NULL filename
7203           and to not create some bogus " " filename.  Affected file is
7204           lib/silcutil/silclog.c.
7205
7206 Fri Sep  7 22:16:38 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7207
7208         * Fixed various printing bugs on the user interface in the
7209           Irssi SILC Client.  Minor changes that were forgotten from
7210           the release.
7211
7212 Fri Sep  7 17:28:37 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7213
7214         * Fixed the configure.in.pre and the compilation and distribution
7215           environment to support the new autoconf 2.52.  That version is
7216           now required to compile the CVS trunk.
7217
7218 Thu Sep  6 12:47:37 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7219
7220         * Renamed function silc_parse_nickname to silc_parse_userfqdn
7221           to generally parse user@fqdn format strings.  Affected file
7222           lib/silcutil/silcutil.c.
7223
7224         * Added nickname_format and nickname_force_format fields to the
7225           SilcClientParams structure.  The first one defines the format
7226           for the nicknames that the library will enforce if the receives
7227           multiple same nicknames.  The second one is boolean value and
7228           can be used to force the library to always enforce the format
7229           to the nicknames regardles whether there are multiple nicknames
7230           or not.  This configurable formatting was employed to flexibly
7231           support accessing multiple nicknames from the user interface.
7232           The userinterface can now set the nicknames to what ever format
7233           they prefer.  Affected file lib/silcclient/silcapi.h.
7234
7235           Added function silc_client_nickname_format to the file
7236           lib/silcclient/idlist.c.  It performs the nickname formatting.
7237
7238           Added new field `hostname´ to the SilcClientEntry context.
7239           It holds the hostname of the client.  Affected file is
7240           lib/silcclient/idlist.h.
7241
7242         * Irssi SILC Client sets the nicknames in nick@hostn format.
7243           Fe. priikone@otaku, priikone@otaku2 etc.  Affected file
7244           irssi/src/silc/core/silc-core.c.
7245
7246           The WHOIS printing now also shows both the real nickname and
7247           the formatted nickname so that user knows how to access the
7248           user if there are multiple same nicknames cached.  Affected
7249           file irssi/src/silc/core/client_ops.c.  Changed the WHOIS
7250           printing formatting too to take the hostname now as a separate
7251           argument.  The Affected file is
7252           irssi/src/fe-common/silc/modules-formats.[ch].
7253
7254         * Changed the silc_client_get_clients_local to accept the formatted
7255           nickname as argument.  It accepts the real nickname too but the
7256           formatted nickname can be used to find the true entry from
7257           multiple entries.  Affected file lib/silcclient/silcapi.h and
7258           lib/silcclient/idlist.c.
7259
7260         * Added nickname_format_parse field to the SilcClientParams.
7261           It is a callback function provided by the application to parse
7262           the nickname out of the formatted nickname string. The library
7263           calls it to get the nickname from the formatted string. Since
7264           the application generally knows better the format of the nickname
7265           string it parses it instead of the library, even though library
7266           encodes the formatted string.  If the callback function is not
7267           provided then the library will use the string as is.  The
7268           affected file is lib/silcclient/silcapi.h.
7269
7270         * All the nickname strings passed to the client library in
7271           commands are now expected to be formatted nickname strings.
7272           If the command does not support the formatted nickname string
7273           it will assume that the sent string is the actual nickname.
7274           Affected file lib/silcclient/command.c.
7275
7276 Tue Sep  4 22:31:28 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7277
7278         * Added public key authentication support to OPER and SILCOPER
7279           commands in the client library.  Affected file is
7280           lib/silcclient/command.c.
7281
7282 Tue Sep  4 12:39:17 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7283
7284         * Changed the get_auth_methdod client operation to be asynchronous.
7285           It can be async if the application resolves the authentication
7286           method from the server during the negotiation.  Added new
7287           SilcGetAuthMeth completion callback that the application will
7288           call after resolving the authentication method.
7289
7290           Added function silc_client_request_authentication_method that
7291           the application can use to resolve the authentication method
7292           from the server.  Added also SilcConnectionAuthRequest callback
7293           that the library will call after the server has replied.  The
7294           application can call this function if it does not know the
7295           current authentication method.
7296
7297           Affected files are lib/silcclient/client.c and
7298           lib/silcclient/silcapi.h.
7299
7300         * The Irssi SILC client now automatically resolves the authentication
7301           method incase any configuration information is not present (and
7302           currently there never is).  The affected file is
7303           irssi/src/silc/core/client_ops.c.
7304
7305         * Fixed public key authentication from the client library.
7306           Affected file lib/silcclient/protocol.c.  Changed also the
7307           protocol specification about the public key authentication in
7308           the connection authentication protocol.  The actual data to be
7309           signed is now computed with a hash function before signing.
7310
7311         * Fixed the public key authentication from the server as well.
7312           Affected file silcd/protocol.c.
7313
7314         * Removed the mlock()'s from the memory allocation routines.
7315           Affected file lib/silcutil/silcmemory.c.  The ./configure does
7316           not check anymore for the mlock().  Affected file is
7317           configure.in.pre.
7318
7319         * Fixed USERS command in server to allow the execution of the
7320           command for private and secret channels if the client sending
7321           the command is on the channel.  Affected file silcd/command.c.
7322
7323         * Fixed silc_client_get_clients_local to return the clients
7324           count correctly.  It could return wrong value.  Affected file
7325           lib/silcclient/idlist.c.
7326
7327 Mon Sep  3 20:09:59 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7328
7329         * Fixed the lib/silcmath/mpi/mpi.h to always use 32-bit data
7330           types.  The assembler optimizations seemed not to like 64-bit
7331           data types.  The assmebler optimizations thus are now enabled
7332           also for BSD systems as opposed to only enable them for Linux.
7333
7334         * Do not check for threads at all on BSD systems.  Affected
7335           file configure.in.pre.
7336
7337         * Removed -n and -h options from the Irssi SILC Client since
7338           they are not used in silc.
7339
7340         * Fixed the prime generation to assure that the first digit
7341           of the generated random number is not zero since our conversion
7342           routines does not like number strings that starts with zero
7343           digit.  If zero digit is seen the random number is regenerated.
7344           This caused some corrupted RSA keys when the zero first digit
7345           was met.  Affected file lib/silcmath/silcprimegen.c.
7346
7347 Sun Sep  2 17:17:24 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7348
7349         * Fixed WIN32 configuration in the ./configure script.
7350           Fixed to include xti.h on environments that has it.
7351           Patches by Carsten Ilchmann and andrew.
7352
7353 Sat Sep  1 00:29:33 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7354
7355         * Changed the silc_id_create_client_id to be collision
7356           resistant.  It is now assured that there cannot be created
7357           two same client ID's.  I suspect that some weird bugs in
7358           the server were actually caused by duplicate Client IDs.
7359           Affected file silcd/serverid.[ch].  A router receiving
7360           new ID now also assures and informs the sending server
7361           if the ID caused collision.
7362
7363         * Changed the silc_id_create_channel_id to also assure that
7364           there are no collisions.
7365
7366 Wed Aug 29 17:55:01 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7367
7368         * Statement about ignoring the Mutual Authentication flag when
7369           performing rekey with PFS was a bit misleading.  It is ignored
7370           if it was set in the initial negotiation, it cannot be even
7371           set in the rekey.  Fixed in the ke-auth draft.  Started the
7372           new versions of the protocol drafts in the doc/.
7373
7374 Sun Aug 26 14:59:15 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7375
7376         * Fixed a bug in silc_client_command_identify_save when saving
7377           new channel information.  The channel name was no duplicated
7378           and caused crash on exit.  Affected file is
7379           lib/silcclient/command_reply.c.
7380
7381 Fri Aug 17 23:07:45 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7382
7383         * Fixed the getkey command handling in the server.  Send just
7384           empty OK reply to the sender if the key could not be fetched
7385           (but everything else was ok, like the key just was not available).
7386           Changed the public key parameter to optional in the protocol
7387           specs so that empty OK reply can be sent.  Affected file
7388           silcd/command.c.
7389
7390           Added a message to Irssi SILC client to tell to user if the
7391           server did not return a public key.
7392
7393 Tue Aug 14 07:29:27 CEST 2001  Pekka Riikonen <priikone@silcnet.org>
7394
7395         * Fixed a channel key regeneration bug.  It registered new
7396           timeout tasks exponentially until all system resources were
7397           used.  Affected file silcd/server.c.
7398
7399 Sun Aug 12 20:48:14 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7400
7401         * Added the SILC Document generator to the scripts/silcdoc.
7402           It can be used to generate the Toolkit Reference Manual out
7403           of the source tree.  Internally it will also use the RoboDoc
7404           generator now imported in util/robodoc.
7405
7406 Sun Aug 12 12:28:17 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7407
7408         * Added couple of return's in rekey protocol if error orccurred
7409           during the protocol.  The execution must be terminated.
7410           Affected file silcd/protocol.c.  Also, terminate the protocol
7411           always with timeout.
7412
7413 Sat Aug 11 12:36:02 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7414
7415         * The client's Client ID was created initally from the wrong
7416           nickname (it could have been in format nick@host) in the
7417           silc_server_new_client.  Affected file silcd/packet_receive.c
7418
7419 Sat Aug 11 00:29:57 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7420
7421         * Added some SILC_LOG_ERROR's to various error conditions
7422           if client could not be added to ID cache.  Affected files
7423           silcd/packet_receive.c and silcd/server.c.
7424
7425         * When client's sock->user_data is freed, NULL also the
7426           client->router and client->connection pointers.  Added check
7427           for these pointers being NULL to various places around the
7428           code.  Affected file silcd/server.c.
7429
7430         * Added client->data.registered == TRUE checks to various
7431           places around the code to assure that unregistered client's
7432           are not handled when it is not allowed.  Affected file
7433           silcd/server.c.
7434
7435         * Added `bool registered' fields to all
7436           silc_idlist_[server|client]_get_* routines to indicate whether
7437           the fetched client needs to be registered or not.  Affected
7438           file silcd/idlist.[ch].
7439
7440         * Add your own entry as registered to the ID cache in the
7441           server.  Affected file server.c.
7442
7443         * Fixed a bug in silc_server_new_server.  The SilcServer was
7444           set as the new server's context instead of SilcServerEntry.
7445           This naturally caused some weird bugs.
7446
7447         * Added "updated" field the SilcChannelEntry which indicates
7448           the time since the channel entry was last accessed.  This
7449           can be used to determine whether it is necessary to
7450           announce the channel after backup resuming protocol.
7451           Affected files silcd/idlist.[ch].
7452
7453 Thu Aug  9 18:28:37 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7454
7455         * Do not delete the channel rekey task when adding it
7456           for in silc_server_create_channel_key.
7457
7458         * Changed the silc_server_create_channel_key to return
7459           TRUE or FALSE to indicate the success of the channel key
7460           creation.
7461
7462 Thu Jul 26 11:32:31 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7463
7464         * Fixed MSVC++ project files and added missing files to
7465           Makefiles under win32/.
7466
7467 Wed Jul 25 18:43:54 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7468
7469         * Do not add TCP_NODELAY flag if the operating system
7470           does not have it defined.  Affected files are
7471           lib/silcutil/[unix/win32]/silc[unix/win32]net.c.
7472
7473         * Fixed buffer overflow from Irssi SILC Client.  Affected
7474           file irssi/src/fe-common/core/themes.c.
7475
7476         * Fixed double free in client library in the file
7477           lib/silcclient/client.c when disconnecting from server.
7478
7479         * Applied double free patch from cras to Irssi SILC client.
7480           Affected files irssi/src/core/[modules/expandos].c
7481
7482         * Fixed the disconnection handling to Irssi SILC Client.
7483           The application must call silc_client_close_connection
7484           in ops->connect client operation in case of failure of
7485           the connection.  Affected file is
7486           irssi/src/silc/core/client_ops.c.
7487
7488         * Do not set sock->protocol to NULL in the function
7489           silc_client_close_connection after executing the protocol's
7490           final callback since the sock might not be valid anymore.
7491           Affected file lib/silcclient/client.c.
7492
7493 Wed Jul 25 16:04:35 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7494
7495         * Do not enable SILC_THREADS if the linking with libpthread
7496           did not happen.  Affected file configure.in.pre.
7497
7498         * Added notion to protocol specification that server must
7499           verify the sent authentication payload with CMODE when
7500           setting the channel founder key.  Implemented it to the
7501           server.  Affected file silcd/command.c.
7502
7503 Mon Jul 23 18:31:43 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7504
7505         * Added _EXTRA_DIST SILC distribution variable to the
7506           distributions file.  It is used to conditionally add extra
7507           files or directories to the specific distribution.  Affected
7508           files ./prepare, Makefile.am.pre and distributions.
7509
7510           Removed the `_' from the start of the distribution names.
7511           It is redundant.
7512
7513         * Added README.WIN32 for instructions to compile the Toolkit
7514           under WIN32.
7515
7516 Mon Jul 23 10:12:37 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7517
7518         * Fixed a double free in disconnection in the server.  Affected
7519           file is silcd/server.c.
7520
7521         * Fixed the lib/silcske/groups.c to work now also with GMP
7522           MP library.  The string conversion did not work when using
7523           specific base and the base is indicated in the string as well.
7524
7525         * Created win32/ directory which now includes MSVC++ specific
7526           stuff so that toolkit (DLLs) may be compiled with MSVC++.
7527           It will appear only in the toolkit distribution
7528
7529 Sun Jul 22 19:40:30 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7530
7531         * Changed the key material distribution function in case when
7532           the hash output is too short.  The data is now concatenated
7533           a bit differently than it used to.  Made the change to the
7534           SKE protocol specification.
7535
7536         * Added better GMP detection to configure.in.pre.  A patch
7537           by salo.
7538
7539 Fri Jul 20 13:16:00 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7540
7541         * Fixed a minor bug in SKE that might cause some problem on
7542           some platforms.  Affected file lib/silcske/silcske.c.
7543
7544         * Added the cookie checking for initiator in the SKE.  It checks
7545           that the responder returns the sent cookie unmodified.  The
7546           affected file is lib/silcske/silcske.c.  Added new SKE
7547           error type INVALID_COOKIE that can be sent during the
7548           negotiation.  Fixed some memory leaks as well.
7549
7550         * Added the "invalid cookie" error message to Irssi SILC client's
7551           message formats.
7552
7553 Thu Jul 19 21:44:31 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7554
7555         * Added `task_max' field to the SilcClientParams to indicate
7556           the maximum tasks the scheduler can handle.  If set to zero,
7557           default values are used.  Affected file lib/silcclient/silcapi.h.
7558
7559         * Fixed memory leaks in silc_client_close_connection.  Affected
7560           file lib/silcclient/client.c.
7561
7562         * Added silc_client_del_client_entry to client library to free
7563           all memory of given client entry.  Affected file is
7564           lib/silcclient/idlist.[ch].
7565
7566         * Added new functions silc_client_del_channel and
7567           silc_client_del_server to delete channel and server entries.
7568           Affected file lib/silcclient/[silcapi.h/idlist.c].
7569
7570         * Removed silc_client_del_client_by_id from silcapi.h.
7571
7572         * Fixed the INFO command to return the server's own info
7573           correctly when querying by Server ID.  Affected file is
7574           silcd/command.c.
7575
7576 Thu Jul 19 14:47:30 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7577
7578         * Removed the non-blocking settings in WIN32 code in the
7579           silc_sock_[read/write] and added SleepEx instead.  Affected
7580           file lib/silcutil/win32/silcwin32sockconn.c.  The availability
7581           of input data is now checked with FIONREAD and ioctlsocket.
7582
7583 Wed Jul 18 18:34:01 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7584
7585         * Call silc_schedule_task_del_by_context in the
7586           silc_protocol_cancel instead of silc_schedule_task_del_by_callback.
7587           Affected file lib/silccore/silcprotocol.c.
7588
7589         * Call silc_protocol_cancel for active protocols in the
7590           silc_server_close_connection if the funtion
7591           silc_server_free_sock_user_data has not been called.
7592           Affected file silcd/server.c.
7593
7594         * Generic tasks cannot be deleted using the del_by_fd
7595           task deleting function since generic tasks does not match
7596           any specific fd.  Affected file lib/silcutil/silcschedule.[ch].
7597
7598         * Added a notion to SILCOPER help file that the SILCOPER works
7599           only on router server, not on normal server.
7600
7601 Wed Jul 18 09:40:04 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7602
7603         * Added for WIN32 support for the new scheduler as well.
7604           Affected file lib/silcutil/win32/silcwin32schedule.c.
7605
7606         * Fixed the SHA1 implementation to work on various platforms.
7607
7608 Tue Jul 17 23:04:10 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7609
7610         * Rewrote the SILC Scheduler entirely.  Removed the old SILC Task
7611           API.  It is part of the scheduler now.  Everything else is
7612           as previously but some functions has changed their names.
7613           Checkout the lib/silcutil/silcschedule.h for the interface.
7614           Updated all applications to use the new interface.  Affected
7615           files are lib/silcutil/silcschedule.[ch].
7616
7617 Tue Jul 17 16:53:30 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7618
7619         * Found a bug in the SKE implementation.  The HASH value,
7620           specified by the protocol, was not computed correctly.  The
7621           public key of the responder was not added to the computation
7622           even though it is mandatory.  Affected file lib/silcske/silcske.c.
7623           This unfortunately causes incompatibilities with older
7624           clients and servers.
7625
7626         * Added WIN32 specific network init and uninit functions:
7627           silc_net_win32_init and silc_net_win32_uninit to init and uninit
7628           the Winsock2.  Affected file lib/silcutil/silcnet.h and
7629           lib/silcutil/win32/silcwin32net.c.
7630
7631         * Set the socket always to nonblocking mode on WIN32 after
7632           reading data or writing data.  Affected file is
7633           lib/silcutil/win32/silcwin32sockconn.c.
7634
7635 Mon Jul 16 22:55:26 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7636
7637         * Fixed various compilation problems under WIN32.  Affected
7638           files lib/silcutil/win32/silcwin32thread.c and
7639           lib/silcutil/win32/silcwin32schedule.c.
7640
7641         * Removed all _internal.h #includes from public header
7642           files.  Internal headers must never be included from
7643           public headers.
7644
7645           Removed also the lib/silcske/payload_internal.h file.
7646
7647         * All include files that may be needed (public and some others
7648           included by the public headers) by application developers are
7649           now copied to the ./includes directory.  It does not copy any
7650           internal headers.  Affected file Makefile.defines.pre and all
7651           Makefile.am's under lib/ and subdirs.
7652
7653 Thu Jul 12 17:49:31 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7654
7655         * Do not change the ~/.silc directory's permissions automatically.
7656           Affected file irssi/src/silc/core/clientutil.c.
7657
7658 Thu Jul 12 10:18:40 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7659
7660         * Do not cancel the protocol in silc_server_close_connection
7661           it might cause recursion.  Now cancelled in the function
7662           silc_server_free_sock_user_data.  Affected file silcd/server.c.
7663
7664         * Fixed the silc_server_remove_clients_by_server to regenerate
7665           the channel keys correctly finally.  Added also new function
7666           silc_server_remove_clients_channels to actually do it.
7667           Affected file silcd/server.c.
7668
7669         * Fixed the silc_server_new_channel to not crash by giving
7670           wrong router to the new channel.  Affected file is
7671           silcd/packet_receive.c.
7672
7673 Wed Jul 11 18:31:57 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7674
7675         * Added SilcClientParams structure to the lib/silcclient/silcapi.h
7676           which is given as argument to the silc_client_alloc now.
7677           It can be used to configure the client and set various parameters
7678           that affect the function of the client.
7679
7680         * The USERS command in server did not check whether the channel
7681           is private or secret.  Affected file silcd/command.c.
7682
7683         * Added new argument to the USERS command in protocol specification.
7684           The USERS command now can take the channel name as argument
7685           as well.  Added support for this in client and server and
7686           updated the protocol specs.
7687
7688         * Completed the GETKEY command in client. It can be now used
7689           to fetch also servers public key not only some clients.
7690           Affected files lib/silcclient/command[_reply].c.
7691
7692         * Added silc_client_get_server to return server entry by the
7693           server name.  Affected files lib/silcclient/silcapi.h and
7694           idlist.c.
7695
7696         * Redefined the IDENTIFY command in protocol specification to be
7697           more generic.  It now can be used to query information about
7698           any entity in the SILC Network, including clients, servers and
7699           channels.  The query may be based either the entity's name
7700           or the ID.  Added support for this in both client and server.
7701
7702           Affected files silcd/command.c and lib/silcclient/command.c
7703           and command_reply.c.
7704
7705         * Optimized the WHOIS and WHOWAS commands in the server. Removed
7706           the _from_client and _from_server functions.  Affected file
7707           silcd/command.c.
7708
7709         * Added silc_client_get_channel_by_id_resolve to the file
7710           lib/silcclient/silcapi.h to resolve channel information by
7711           its ID.  Added also silc_client_get_channel_by_id that
7712           does not resolve it from the server.
7713
7714 Tue Jul 10 18:05:38 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7715
7716         * Added SilcServerEntry context into the client library
7717           to represent one server.  The INFO command now allocates
7718           these to save the resolved server info.  For now on the
7719           client library will also keep information about servers,
7720           connected and resolved with INFO.
7721
7722           The INFO command now allocates the SilcServerEntry context
7723           and saves the server info there.  The COMMAND_REPLY in
7724           the INFO now returns the parameters to application in
7725           same order as defined in the protocol specification.
7726
7727           The entries are cached in the client->server_cache.
7728
7729         * The INFO command is now issued after received the Client ID
7730           from the server.  Affected file lib/silcclient/client.c.
7731
7732         * The CMODE_CHANGE notify may now return also an SilcServerEntry
7733           to the application as the mode changer might be server.
7734           It is guaranteed that NULL is not returned anymore to the
7735           application.  Affected file lib/silcclient/client_notify.c.
7736
7737           The ID Type is now also passed to the application so that
7738           it can check whether the returned entry is SilcClientEntry
7739           or SilcServerEntry.
7740
7741           Added new function silc_client_get_server_by_id to return
7742           the server entry by ID.  Affected files are the
7743           lib/silcclient/silcapi.h and lib/silcclient/idlist.c.
7744
7745         * Do not create the channel in the Irssi SILC Client when issuing
7746           the JOIN command but when received the sucessful JOIN command
7747           reply.  Otherwise the channel might get created even though we
7748           could not join it.  The Affected file is
7749           irssi/src/silc/core/[silc-channels.c/client_ops.c].
7750
7751         * Fixed a channel joining bug in router.  The router must also
7752           check the channel modes, invite and ban lists etc. when serving
7753           the JOIN command sent by normal server.  Affected file is
7754           silcd/command.c.  The router now resolves the client's
7755           information from the server who sent the JOIN command if it
7756           does not know it, and processes the JOIN command only after
7757           that.
7758
7759         * Changed the SilcCommandCb to take new argument; void *context2.
7760           Affected file lib/silccore/silccommand.h
7761
7762           The second argument in the command callbacks in the server now
7763           includes the SilcServerCommandReplyContext if the command was
7764           called as pending command callback from the command reply.
7765           Otherwise it is NULL. When called as pending the status of the
7766           command reply will be checked and if it was erronous the
7767           error will be sent to the original sender of the command.
7768           This way the client always receives the error messages even
7769           though the server was actually the one who received the error
7770           when it resent the command to router, for example.  Affected
7771           files silcd/command[_reply].[ch].
7772
7773         * Fixed sending WHOWAS command's error message to client if
7774           the requested client could not be found.  It was missing.
7775           silcd/command.c.
7776
7777         * Changed the CMODE and CUMODE commands reply arguments in the
7778           protocol specification.  The Channel ID is now sent in both
7779           of the commands to identify the channel.  Implemented this
7780           new feature to the client and server.  Affected files
7781           lib/silcclient/command_reply.c and silcd/command.c.
7782
7783         * Made better checks for invite and ban lists in the JOIN
7784           command in server.  Affected file silcd/command.c.
7785
7786 Mon Jul  9 18:28:34 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7787
7788         * The server now performs the incoming host IP/DNS lookup
7789           using the silc_socket_host_lookup and thus does not block
7790           the server anymore.  Affected file silcd/server.c.
7791
7792         * Completed the multi-thread support for SILC Scheduler in
7793           the lib/silcutil/silcschedule.c.
7794
7795         * Fixed the configure.in.pre to detect the pthread correctly
7796           on various systems.
7797
7798         * Fixed a deadlock in silc_task_queue_wakeup in the file
7799           lib/silcutil/silctask.c.
7800
7801 Mon Jul  9 13:40:03 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7802
7803         * Added new function silc_schedule_wakeup that is used in
7804           multi-threaded environment to wakeup the main thread's
7805           schduler. It needs to be used when a thread adds a new task
7806           or removes a task from task queues. After waking up, the
7807           scheduler will detect the task queue changes. If threads
7808           support is not compiled in this function has no effect.
7809           Implemented the wakeup mechanism to both Unix and WIN32
7810           systems.  Affected files are lib/silcutil/silcschedule.[ch],
7811           lib/silcutil/unix/silcunixschedule.c and the
7812           lib/silcutil/win32/silcwin32schedule.c.
7813
7814         * Added new function silc_task_queue_wakeup to wakeup the
7815           scheduler by the specified task queue.  Affected file
7816           lib/silcutil/silctask.[ch].
7817
7818         * The silc_socket_host_lookup_start now wakes up the scheduler
7819           after adding the timeout task.  Affected file is
7820           lib/silcutil/silcsockconn.c.
7821
7822         * The silc_socket_host_lookup is synchronous now if the threads
7823           support is not compiled in.  However, the callback is still
7824           called asyncronously through the scheduler, anyway.  Affected
7825           file lib/silcutil/silcsockconn.c.
7826
7827 Mon Jul  9 00:24:45 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7828
7829         * Added new function silc_socket_host_lookup to perform
7830           asynchronous IP and FQDN lookups for the socket connection.
7831           Affected files lib/silcutil/silcsockconn.[ch].
7832
7833 Sun Jul  8 18:44:53 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7834
7835         * Added SILC_MUTEX_DEFINE to define the mutex on environments
7836           that may or may not compile the mutex support in.
7837
7838           Changed the silc_mutex_alloc interface. It allocates the
7839           mutex now to the sent pointer and returns TRUE or FALSE.
7840
7841           Affected file lib/silcutil/silcmutex.h.
7842
7843         * Wrote the SILC Task Queue interface to support multi-threads.
7844           Affected file lib/silcutil/silctask.[ch].
7845
7846         * Wrote the SILC Scheduler to support multi-threads.  Affected
7847           file lib/silcutil/silcschedule.c.
7848
7849 Sun Jul  8 11:16:01 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7850
7851         * Implemented the SILC Mutex API and SILC Thread API for WIN32
7852           in lib/silcutil/win32/.
7853
7854 Sun Jul  8 00:18:15 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7855
7856         * Defined SILC Mutex API and SILC Thread API and implemented
7857           them for Unix.  Affected files are
7858           lib/silcutil/silcmutex.h, lib/silcutil/silcthread.h,
7859           lib/silcutil/unix/silcunixmutex.c and
7860           lib/silcutil/unix/silcunixthread.c.
7861
7862 Sat Jul  7 14:40:31 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7863
7864         * Fixed the silc_server_remove_clients_by_server's channel
7865           key re-generation.  The hash table handling was incorrect
7866           and would not work with many channels.  Affected file is
7867           silcd/server.c.
7868
7869         * Fixed some memory leaks around the server code.
7870
7871         * Rewrote the silc_server_get_users_on_channel to support IPv6
7872           based Client ID's.  Affected file silcd/server.c.
7873
7874         * Defined the SILC_MESSAGE_FLAG_SIGNED to the protocol
7875           specification.  However, a separate document must be written
7876           to define the detailed signing procedure and the payload
7877           associated with the flag.  Defined the flag to the
7878           lib/silccore/silcchannel.h as well.
7879
7880 Fri Jul  6 18:26:31 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7881
7882         * Changed the dynamic tables to static size tables in the
7883           lib/silccrypt/silchmac.c.
7884
7885         * Removed GCC dependencies from the code.  A patch by cras.
7886
7887 Fri Jul  6 09:39:35 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7888
7889         * Do not show the error "Error receiving packet bla bla"
7890           in server if it really was not an error (-2 means that reading
7891           is pending).  Affected file silcd/server.c.
7892
7893 Thu Jul  5 21:22:32 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7894
7895         * Fixed a possible crash in silc_server_remove_clients_by_server
7896           in silcd/server.c.  Fixed there also some memory leaks.
7897
7898         * Fixed the silc_idlist_replace_client_id.  It could replace
7899           wrong key in the hash table.  Affected file silcd/idlist.c.
7900
7901         * Do not check whether there are global users on the channel
7902           if the channel->global_users is FALSE.  Affected functions
7903           silc_server_remove_from_one_channel and
7904           silc_server_remove_from_channels in silcd/server.c.  Also,
7905           do not check if the removed client is local as we can be
7906           sure that global client was not removed from the channel
7907           and checking for global users is not needed.
7908
7909         * The silc_server_remove_clients_by_server now re-generates
7910           the channel keys correctly for those channels that had
7911           clients removed from them.  Affected file silcd/server.c.
7912
7913 Tue Jul  3 11:39:20 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7914
7915         * Found the reason of random crashes in the server.  We weren't
7916           ignoring the SIGPIPE signal (which can be sent in write())
7917           and it crashed the server.  Affected file silcd/silcd.c.
7918
7919 Fri Jun 29 20:05:25 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7920
7921         * Assure that sock->user_data is not NULL in the function
7922           silc_server_packet_send in silcd/packet_send.c.
7923
7924         * Disconnect the remote connection if it could not be added
7925           to any ID lists in the server.  The affected file is
7926           silcd/server.c.
7927
7928         * Check in silc_server_packet_send[_real/dest] that the
7929           socket is not disconnecting and ignore the data if it is.
7930           Affected file silcd/packet_send.c.
7931
7932         * Define inline to __inline on native WIN32 compilation.
7933           Affected file includes/silcwin32.h.
7934
7935         * Added some explicit type casts for inline code since MSVC
7936           require them.  Affected files lib/silcutil/silcbuffer.h,
7937           lib/trq/silcdlist.h and lib/trq/silclist.h.
7938
7939         * Print warning in log files from now on if the packet
7940           decryption fails.  Affected file silcd/server.c.
7941
7942 Thu Jun 28 21:30:39 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7943
7944         * Changed the `say' client operation's interface to accept
7945           new `type' argument to indicate the type of the message sent
7946           by the library.  The application may filter the library's
7947           messages according the type.  The affected file is the
7948           lib/silcclient/silcapi.h.
7949
7950         * Added two new functions to lib/silcclient/silcapi.h:
7951           silc_client_del_client and silc_client_del_client_by_id.
7952           Affected file lib/silcclient/idlist.c.
7953
7954         * Moved the clientincludes.h from includes/ to silc/ and
7955           serverincludes.h from includes/ to silcd/.
7956
7957         * The modes for the CMODE and CUMODE are now passed as
7958           uint32 for application with COMMAND_REPLY.  The affected
7959           file is lib/silcclient/command_reply.c.
7960
7961 Wed Jun 27 22:24:47 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7962
7963         * /WHOIS without arguments shows client's own information.
7964           Affected file lib/silcclient/command.c.
7965
7966         * Changed PING to not accept any arguments.  The specs
7967           says that client can ping only the connected server so
7968           requiring an argument is not needed.  Affected file is
7969           lib/silcclient/command.c.
7970
7971 Wed Jun 27 00:10:33 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7972
7973         * Fixed a fatal bug in private message sending and reception
7974           encryption and decryption when using private message keys.
7975           The implementation was incorrect and did not follow the
7976           specification.  It causd that some of the message were
7977           lost since it did not use the sending and receiving keys
7978           as the protocol suggests.  This has been fixed and will cause
7979           incompatibilities with older clients when sending private
7980           message encrypted with private message keys.  Affected files
7981           lib/silcclient/client_prvmsg.c, lib/silcclient/client_keyagr.c
7982           and various other in Irssi SILC Client.
7983
7984           Added `responder' boolean argument to the functions
7985           silc_client_add_private_message_key[_ske] to indicate when
7986           the key is added as responder or initiator of the key
7987           negotiation.
7988
7989 Tue Jun 26 19:23:07 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7990
7991         * Removed the silc_ske_check_version function and created
7992           a SilcSKECheckVersion callback.  Added also a function
7993           silc_ske_set_callbacks that is now used to set all SKE
7994           callbacks.  The callback functions are not given to
7995           the SKE functions anymore, but this function is used to
7996           set the callbacks.
7997
7998         * Fixed the WIN32 DLL generation in lib/Makefile.am.pre.
7999
8000         * Added `silc_version' argument to the silc_client_alloc
8001           to define the version of the application for the library.
8002           The library will use the version string to compare it
8003           against the remote host's (usually a server) version
8004           string.  Affected file lib/silcclient/silcapi.h
8005
8006         * Added the KE protocol context to Key Agreement context
8007           in client library so that we can abort the SKE if it
8008           is in process when we get timeout.  Affected file is
8009           lib/silcclient/client_keyagr.c.
8010
8011         * Do not resolve the client ID forever if it returns in the
8012           first time that such client does not exist.  This was done
8013           for example with private message.  Affected file is
8014           lib/silcclient/client_prvmsg.c.
8015
8016 Mon Jun 25 21:42:51 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
8017
8018         * Do not add regex.h for WIN32.  The affected file
8019           includes/silcincludes.h.
8020
8021         * Added WIN32 DLL generation to lib/Makefile.am.pre.  It might
8022           not work yet 100%.  It generates the DLL's automatically
8023           when compiling with --with-win32 under cygwin.
8024
8025 Sun Jun 24 19:49:23 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
8026
8027         * lib/contrib/regex.c is not compiled on WIN32.
8028
8029         * Added silc_net_get_socket_opt function to the
8030           lib/silcutil/silcnet.h.
8031
8032         * Added includes/silcwin32.h for WIN32 specific includes
8033           and definitions.
8034
8035         * Do not use ptime structure or any of the posix process
8036           functions on WIN32 in lib/silccrypt/silrng.c.
8037
8038         * Added silc_gettimeofday to provide generic function
8039           for struct timeval on all platforms.  Added the function
8040           to lib/silcutil/silcutil.h.
8041
8042 Sun Jun 24 12:19:52 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
8043
8044         * Moved the lib/silccore/silcsockconn.[ch] to the utility
8045           library as they clearly belong there.  As a plus side we
8046           can make the actual socket connection routines platform
8047           specific.
8048
8049           Added also new generic function silc_socket_read and
8050           silc_socket_write (that used to be silc_packet_[read/write].
8051           The implementation of these are platform specific.
8052
8053         * Added WIN32 specific routines of silc_socket_[read/write]
8054           to lib/silcutil/win32/silcwin32sockconn.c.
8055
8056 Sat Jun 23 16:01:00 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
8057
8058         * Added preliminary support for native WIN32 compilation under
8059           cygwin (using the -mno-cygwin option for GCC) to the
8060           ./configure.in.pre.  The --with-win32 now prepares the
8061           compilation for native WIN32.
8062
8063         * Rewrote the SILC Scheduler interface in the file
8064           lib/silcutil/silcschedule.h.  The scheduler is now context
8065           based and does not have anymore any global static scheduler.
8066           Moved the Unix scheduler to the lib/silcutil/unix/ directory
8067           and created lib/silcutil/win32 directory for WIN32 based
8068           scheduler.
8069
8070         * Added Unix specific network routines to the
8071           lib/silcutil/unix/silcunixnet.c and the old
8072           lib/silcutil/silcnet.c includes now only generic routines.
8073
8074           Added WIN32 specific network routines to the
8075           lib/silcutil/win32/silcwin32net.c.
8076
8077         * Added Unix specific utility functions from the
8078           lib/silcutil/silcutil.c to lib/silcutil/unix/silcunixutil.c.
8079
8080         * Added WIN32 SILC Scheduler to the file
8081           lib/silcutil/win32/silcwin32schedule.c. The code is of course
8082           untested.
8083
8084 Fri Jun 22 10:44:14 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
8085
8086         * Do not handle JOIN notify in the server if the target client
8087           is not registered (idata->registered == FALSE).  The affected
8088           file is silcd/packet_receive.c.
8089
8090         * Update the nickrec->founder in event_cumode in the Irssi SILC
8091           client.  Affected file irssi/src/silc/core/silc-channels.c.
8092
8093         * Fixed the CUMODE_CHANGE notify handling in the server when
8094           server and router are announcing their clients on channels.
8095           Now the mode changes are saved and notified correctly.  The
8096           affected file is /silcd/packet_receive.c.
8097
8098         * Fixed silc_idlit_replace_[server/client/channel]_id functions.
8099           They really did not replace the cache entry in the ID Cache.
8100           Now they do that.  Affected file silcd/idlist.c.
8101
8102         * Fixed the KICK notify handling in the Irssi SILC client to
8103           update the channel records so that the kicked client does not
8104           appear to be on the channel.  The affected file is
8105           irssi/src/silc/core/silc-channels.c.
8106
8107         * Always update the conn->current_channel when executing command
8108           on a channel.  Affected file irssi/src/silc/core/silc-servers.c.
8109
8110         * Fixed the KILL notify handling in Irssi SILC client to remove
8111           the killed client on all channels.
8112
8113 Thu Jun 21 17:10:08 CEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8114
8115         * Fixed the silc_parse_command_line to remove extra spaces
8116           from the start and end of the arguments.  Affected file is
8117           lib/silcutil/silcutil.c.
8118
8119         * Cancel and free any active protocol in the function
8120           silc_server_close_connection.  Affected file silcd/server.c.
8121
8122         * Cancel and free any active protocol in the function
8123           silc_client_close_connction.  Affected file is
8124           lib/silcclient/client.c.
8125
8126         * Do not execute the KILL command for clients that are in
8127           history (ie. they are not in the network).  Affected file is
8128           silcd/command.c.
8129
8130         * Fixed KILL notify handling, client does not crash anymore.
8131           Affected file irssi/src/silc/core/silc-channels.c.
8132
8133         * Reduced the default packet buffer size from 2048 to 1024 in
8134           lib/silccore/silcpacket.c.
8135
8136         * Added SILC_SKE_STATUS_FREED SKE status type and a reference
8137           counter to the SKE context that is incresed when the SKE library
8138           performs async operation outside the library.  If the outside
8139           process frees the SKE context and FREED status will be set
8140           and the library will detect after the sync operation that the
8141           libary is freed.  The affected files are
8142           lib/silcske/silcske[_status].[ch].
8143
8144         * Resolve the client entry information in the function
8145           silc_client_channel_message to assure that NULL pointer is not
8146           passed as client entry to the application. */
8147
8148         * Fixed the task timeout calculation to assure that there is
8149           never negative timeouts.  The affected file is
8150           lib/silcutil/silcschedule.c.
8151
8152         * Fixed the channel user mode notification sending in server.
8153           It was sent point-to-point to the router (or to server by router)
8154           but it needs to be destined to a channel.  The routines now
8155           supports sending the channel user mode notifys to the channels
8156           when announcing clients and channels.  Affected files are
8157           silcd/server.c and silcd/packet_receive.c.
8158
8159         * Fixed the CHANNEL_CHANGE notify handling in the client libary.
8160           It did not actually replace the old channel entry in the cache.
8161           Affected file lib/silcclient/client_notify.c.
8162
8163 Tue Jun 19 22:10:36 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8164
8165         * Fixed a possible crash in silc_packet_send_prepare.  It now
8166           assures always that there is enough space in the buffer and
8167           at the tail area of the buffer (for MAC).
8168
8169           Fixed the inbound buffer reallocation in silc_packet_read.
8170           It was old code and did not handle the reallocation correctly.
8171           Affected
8172
8173           The affected file is lib/silccore/silcpacket.c.
8174
8175         * Fixed buffer overflow in silc_parse_nickname in the file
8176           lib/silcutil/silcutil.c.
8177
8178 Tue Jun 19 13:40:09 CEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8179
8180         * make install generates new server keys only if there is not
8181           keys already.
8182
8183 Mon Jun 18 18:49:07 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8184
8185         * Set SILC_MESSAGE_FLAG_NOREPLY when sending the away message.
8186           Added check that if the NOREPLY is set then we will not send
8187           the away message.  This avoids infinite loop of away messages
8188           if both clients are away.  The affected file is
8189           lib/silcclient/client_prvmsg.c.
8190
8191         * Fixed client crash if /NICK was given without arguments.
8192           Affected file lib/silcclient/command.c.
8193
8194         * Server does not send the invite list in INVITE command back
8195           to the client if the list was not altered.  Added this notion
8196           to the protocol spec as well.  Affected file silcd/command.c.
8197
8198           Fixed possible crash in INVITE command by checking the
8199           value of silc_server_get_client_route command.
8200
8201         * Fixed the INVITE notify type handling.  The arguments are now
8202           taken in correct order and client does not crash.  The affected
8203           file is irssi/src/silc/core/silc-channels.c.
8204
8205           Removed the "Inviting xxx to channel" message from the
8206           client library away and let the application handle it.
8207           Affected file lib/silcclient/command.c.  Added that message
8208           to Irssi SILC client's message formats.
8209
8210         * Fixed CMODE command crash in client.  It now checks the
8211           amount of arguments correctly and does not crash.  The affected
8212           file is lib/silcclient/command.c.
8213
8214         * Do not create new channel automatically in silc_channels_join
8215           but check whether the channel by that name already exists.
8216           Affected file irssi/silc/core/silc-channels.c.
8217
8218         * Do not send the SERVER_SIGNOFF to router if the disconnected
8219           entity was the router.  Affected file silcd/server.c.
8220
8221         * Added the handling of the SERVER_SIGNOFF notify to the Irssi
8222           SILC client as it was missing from there.
8223
8224           Added the handling of the KICK notify to the Irssi SILC client
8225           as it was missing.  Added "you have been kicked" message to
8226           Irssi SILC client's message modules formats.
8227
8228           Added the handing of the KILL notify to the Irssi SILC client
8229           as it was missing.  Added the kill message module formats
8230           as well.
8231
8232           The affected file is irssi/src/silc/core/silc-channels.c.
8233
8234         * The router did not save the channel mode the server announced.
8235           Affected file silcd/packet_receive.c.
8236
8237         * Fixed a possible crash in INFO command in server.  If the
8238           server did not provide the server info it crashed.  Affected
8239           file silcd/command.c.
8240
8241 Sun Jun 17 15:26:05 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8242
8243         * Fixed the GETKEY command in the server to check also the
8244           global list.  Otherwise the GETKEY would not work correctly
8245           in normal SILC server.  Affected file silcd/command.c.
8246
8247 Sat Jun 16 18:00:00 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8248
8249         * Fixed GETKEY crash, it crashed if the command did not succseed.
8250
8251 Tue Jun 12 21:36:18 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8252
8253         * Redefined the SILC MP API in lib/silcmath/silcmp.h. The API
8254           is now real and not just an macro interface to GMP.
8255
8256           Removed the entire GMP from the source tree and imported new
8257           NSS MPI library instead.  Reason for removing GMP is that it is
8258           extremely large and compiles extremely slow.  The NSS MPI
8259           is only a few files and compiles in less than 10 seconds.
8260           The speed is also about the same as GMP.  The MPI is imported
8261           to lib/silcmath/mpi.
8262
8263           If the system has GMP installed we will still use the GMP.
8264           If it is not then the NSS MPI will be compiled.
8265
8266 Mon Jun 11 18:07:24 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8267
8268         * Merged a long nickname (127 characters long) crash bugfix from
8269           Irssi CVS tree.  Affected file irssi/src/core/misc.c.
8270
8271         * Merged a freed memory reference bugfix from Irssi CVS tree.
8272           Affected file irssi/src/core/commands.c.
8273
8274 Sun Jun 10 16:08:35 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8275
8276         * Added the server's public key sving and verification to the
8277           server when performing the SKE.  This was missing and the
8278           remote server's (or router's) public key was accepted without
8279           checking whether we have it previously or trust it at all.
8280           Affected file silcd/protocol.c.
8281
8282 Sat Jun  9 20:17:30 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8283
8284         * Check in the silc_server_timeout_remote if protocol is active
8285           and make sure that the protocol's final callback is called so
8286           that all memory if freed.  Affected file silcd/server.c.
8287
8288 Sat Jun  9 12:51:27 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8289
8290         * silc_server_whois_send_reply crashed the server if the nickname
8291           was 127 characters long.  Affected file silcd/command.c.
8292
8293 Thu Jun  7 16:29:56 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8294
8295         * Added sanity check to the silc_server_new_client. If the hostname
8296           is provided inside username then check that the provided hostname
8297           really is the same as the resolved one.  If the hostname was not
8298           resolved then check it from the public key.  Affected file is
8299           silcd/packet_receive.c.
8300
8301         * Fixed a fatal bug in Irssi SILC client. Do not send QUIT command
8302           if the server disconnected us and the connection is not valid
8303           anymore.  Affected file irssi/src/silc/core/silc-channels.c.
8304
8305         * Moved the silc_client_[chmode|chumode|chumode_char] away from
8306           the library to the lib/silcutil/silcutil.[ch].
8307
8308 Thu Jun  7 08:57:16 CEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8309
8310         * Close log file after open.  Affected file
8311           lib/silcutil/silclog.c.
8312
8313         * Check whether sock == NULL in silc_client_send_packet and return
8314           if it is.  Affected file lib/silcclient/silcclient.c.
8315
8316         * Check rec->entry == NULL in the Irssi SILC Client before
8317           sending the channel message.  Affecte file is
8318           irssi/src/silc/core/silc-servers.c.
8319
8320 Tue Jun  5 08:08:21 CEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8321
8322         * Merged a splitted window bugfix from Irssi CVS tree.  The
8323           affected file is irssi/src/fe-text/textbuffer-view.c.
8324
8325         * Fixed the ME, ACTION and NOTICE printing in Irssi Client.
8326           It did not print nickname.
8327
8328         * Improved the distributions system a bit.
8329
8330 Mon Jun  4 17:57:16 CEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8331
8332         * Merged /WINDOW bugfix from irssi CVS tree. Affected file is
8333           irssi/src/fe-text/gui-window.c.
8334
8335         * Fixed a fatal bug in Irssi SILC client. Crashed if sent message
8336           to in-active server.  The affected file is
8337           irssi/src/silc/core/client_ops.c.
8338
8339         * Resolve the client in USERS command reply if the entry does
8340           not have username resolved.  The affected file is
8341           lib/silcclient/command_reply.c.  Also, changed the IDENTIFY
8342           command to WHOIS command to really resolve stuff.  The USERS
8343           is not used any more in any critical section so WHOIS can
8344           be used even though it might be slower than IDENTIFY.
8345
8346         * Changed the lib/silcutil/silchashtable.h header to ROBODoc
8347           format.
8348
8349 Sun Jun  3 14:21:32 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8350
8351         * Changed the protocol API a bit more consistent in the
8352           lib/silccore/silcprotocol.[ch].
8353
8354         * Changed the following headers to ROBODoc format:
8355
8356                 lib/silccore/silcpayload.h
8357                 lib/silccore/silcprotocol.h
8358                 lib/silccore/silcsockconn.h
8359
8360           All core library headers are now formatted.
8361
8362 Sat Jun  2 10:45:09 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8363
8364         * Fixed a bug in Irssi SILC client; do not show that you are
8365           server/router operator if you really are not.  Affected file is
8366           irssi/src/silc/core/client_ops.c.
8367
8368         * Renamed silc_command_free_payload to silc_command_payload_free.
8369           Affected file lib/silccore/silccommand.h
8370
8371         * Added silcmath.h to include the prototoypes of various routines
8372           in the lib/silcmath.  Removed the old modinv.h, mpbin.h and
8373           silcprimegen.h.
8374
8375         * Changed the following headers to ROBODoc format:
8376
8377                 lib/silccore/silcchannel.h
8378                 lib/silccore/silccommand.h
8379                 lib/silccore/silcid.h
8380                 lib/silccore/silcidcache.h
8381                 lib/silccore/silcmode.h
8382                 lib/silccore/silcnotify.h
8383                 lib/silccore/silcpacket.h
8384                 lib/silcmath/silcmath.h
8385
8386 Fri Jun  1 22:19:37 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8387
8388         * Added checking to the server code not to start the server if
8389           ciphers and stuff are not configured properly.  Affected files
8390           silcd/serverconfig.[h] and silcd/server.c.
8391
8392         * Changed the layout of the header files of the public interfaces
8393           in the SILC libraries.  The new layout supports ROBODoc
8394           documentation tool (and some others) so that it is easy to create
8395           a library reference manual.  All the other headers and source
8396           code must still follow the CodingStyle document.  Also source
8397           code must not include these ROBODoc stuffs, only the headers.
8398           Furthermore, all public interface headers must now be named
8399           by using `silc' prefix, example: silcapi.h, silccipher.h.
8400           Some files were renamed due to this.  All the other headers
8401           must not be used as public interfaces.  I will update the
8402           CodingStyle document later.  Changed following headers, so far:
8403
8404                 lib/silcclient/silcapi.h
8405                 lib/silccore/silcauth.h
8406                 lib/silccore/silcprivate.h
8407                 lib/silccrypt/silcdh.h
8408
8409 Fri Jun  1 10:28:09 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8410
8411         * Updated TODO.
8412
8413         * Removed silc_client_packet_send_flush from the client library
8414           as it is not needed.  Affected file lib/silcclient/client.[ch].
8415
8416         * Added printing of message of unresolved authentication method
8417           to the Irssi SILC client.  Added it to the module formats.
8418           Removed the same message from the client library.
8419
8420 Thu May 31 13:57:33 CEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8421
8422         * Added new distribution feature, DISTLABEL.  Every distribution
8423           can define own preprocessor label that can be used in the
8424           source code.  For example: #ifdef SILC_DIST_CLIENT.  Affected
8425           file distributions, acconfig.h.pre and prepare.
8426
8427 Tue May 29 22:16:40 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8428
8429         * Added Makefile.defines_int to include the actual definitions
8430           for Makefile.defines.in.  Tested the new distribution system,
8431           created distributions and tested installation.
8432
8433         * Added AWAY message printing to the Irssi SILC client.  Added
8434           the messages to the irssi/src/fe-common/silc/module-formats.[ch].
8435
8436         * Added SCONNECT command to call the SILC's CONNECT command.
8437           Cannot use CONNECT directly since Irssi uses that internally.
8438           Affected file irssi/src/silc/core/silc-servers.c.
8439
8440           Added ACTION local command.  It is same as ME command but takes
8441           the channel as mandatory argument.
8442
8443           Rewrote some of the Irssi's help files to suite for SILC
8444           protocol.
8445
8446 Mon May 28 19:05:22 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8447
8448         * Added Makefile.defines[.in] that should for now on be included
8449           in all Makefile.am file in the source tree.  That file includes
8450           all common compilation definitions for SILC source tree.
8451
8452 Mon May 28 10:30:51 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8453
8454         * Minor changes to the ./prepare script to change the package
8455           name according the distribution name to the configure.in.
8456
8457 Sun May 27 22:24:57 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8458
8459         * Created new distribution system.  Added file `distributions'
8460           that defines all the distributions that can be created out of
8461           the SILC source tree.  The ./prepare script now reads that
8462           file to determine how to prepare the distributions.  The
8463           first argument to the ./prepare is the name of the distribution
8464           and second is the version of the distribution.  If given
8465           without arguments it creates the default (toolkit) distribution
8466           with the default version (defined in ./prepare).
8467
8468           All Makefile.am files that are subject to the distributions
8469           are now named as Makefile.am.pre.  These are ./Makefile.am
8470           and lib/Makefile.am.  Others may be changed later.
8471
8472 Sun May 27 15:57:17 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8473
8474         * Added invite list, ban list, some key management and connection
8475           error message printing to module formats in the Irssi SILC client.
8476
8477         * Added new silc_client_set_away_message to set the away message
8478           that is back to the person who sent private message.  The
8479           affected file lib/silcclient/silcapi.h and the
8480           lib/silcclient/client_prvmsg.c.
8481
8482 Sun May 27 12:39:48 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8483
8484         * Fixed the private message sending in the Irssi SILC client,
8485           added local command KEY to the Irssi SILC client.
8486
8487           Added key management and key agreement message formats to the
8488           irssi/src/fe-common/silc/module-formats.[ch].
8489
8490           Added USERS (alias WHO) printing, server/router operator
8491           indication and LIST command printing to the module formats.
8492
8493 Sat May 26 17:43:42 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8494
8495         * Fixed channel joining notify handling, cumode notify handling
8496           from Irssi SILC client.
8497
8498         * Added SILC specific module-formats to the Irssi SILC client so
8499           that SILC specific message hilighting, colors etc is possible.
8500           Affected file irssi/src/fe-common/silc/module-formats.[ch].
8501
8502           Added channel mode, channel user mode, actions, notices,
8503           whois and whowas printing to the the module-formats.c.
8504
8505         * Fixed a bug in channel deletion in the server.  The channel
8506           is not left to the cache even if the channel founder auth mode
8507           is set when there are no users anymore on the channel.  Affected
8508           file silcd/server.c.
8509
8510         * The silc_net_localhost now resolves the entire hostname including
8511           the domain name.  Affected file lib/silcutil/silcnet.c.
8512
8513 Sat May 26 12:13:37 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8514
8515         * Changed the ask_passphrase client operation to be ascynchronous.
8516           It has now a completion callback and a context that the
8517           application must call after it has got the passphrase from
8518           the user.  Affected files lib/silcclient/silcapi.h,
8519           lib/silcclient/protocol.c, lib/silcclient/command.c and
8520           silc/client_ops.c.
8521
8522           Added SilcAskPassphrase callback that the application calls
8523           to deliver the passphrase to the library.
8524
8525         * Changed the SKE protocol's SilcSKEVerifyCb to be asynchronous.
8526           The public key verification and especially a certificate
8527           verification is asynchronous procedure.
8528
8529           Added new SILC_SKE_STATUS_PENDING status to indicate the
8530           request is pending and a callback will be called to finalize
8531           the request.
8532
8533           Added also SILC_SKE_STATUS_PUBLIC_KEY_NOT_PROVIDED status to
8534           indicate that remote end did not send its public key (or
8535           certificate), even though we require it.  Added check for this
8536           condition in the SKE.  This was a security bug, now fixed.
8537
8538           Defined new SilcSKEVerifyCbCompletion callback that is called
8539           when the verification process is completed.
8540
8541           The affected files lib/silcske/silcske_status.h and
8542           lib/silcske/silcske.[ch].
8543
8544         * Changed the verify_public_key client operation to be async
8545           as well.  Defined SilcVerifyPublicKey callback that is used to
8546           indicate the success of the public key verification process.
8547
8548           Changed the server and client to use the new async client
8549           operations.
8550
8551         * Changed the Irssi SILC client's internal scheduler to be called
8552           twice as many times as it used to be.  As a result the client
8553           should be a bit faster now.  Affected file is
8554           irssi/src/silc/core/silc-core.c.
8555
8556         * Added support to Irssi SILC client of asynchronous public key
8557           verification and passphrase inquiry.  Affected file is
8558           irssi/src/silc/core/silc-core.c.
8559
8560 Fri May 25 14:38:38 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8561
8562         * Do not say "You have left channel %s" in client library.
8563           Moved it to the application.  Affected files are
8564           lib/silcclient/command.c and silc/client_ops.c.
8565
8566         * Fixed silc_client_get_clients.  Command context was not
8567           duplicated and was freed memory in the callback.  Affected
8568           file lib/silcclient/idlist.c.
8569
8570         * Do not say "you are now talking..." on JOIN command in the
8571           client library.  The appliation must handle it.
8572
8573         * Do not say ".. changed topic to" in command reply in the
8574           client libary.  The application must handle it.
8575
8576         * Fixed TOPIC command sending in the client library.
8577
8578         * Fixed a memory leak in silc_client_command_free in the file
8579           lib/silcclient/command.c.
8580
8581 Thu May 24 19:08:55 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8582
8583         * Imported a modified version of Irssi client to the source tree.
8584           The Irssi will be used to create a new client called
8585           Irssi SILC.  Imported to irssi/.
8586
8587           Added silc_core_init_finish function to the Irssi.  Affected
8588           file irssi/configure.in.
8589
8590           A lot changes in the Makefile.ams around the irssi tree.
8591
8592 Tue May 22 22:23:49 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8593
8594         * Do not rehash if the new size is same as the old size of the
8595           hash table, in the silc_hash_table_rehash*.  The affected file
8596           lib/silcutil/silchashtable.c.
8597
8598         * Replaced hash_table_del_by_context calls from the server
8599           (when channel->user_list and client->channels) to the
8600           hash_table_del as it is sufficient and faster.
8601
8602 Tue May 22 17:27:16 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8603
8604         * Added silc_hash_table_list, silc_hash_table_get and the
8605           SilcHashTableList structure to provide an alternative way to
8606           traverse the hash table.  The affected files are
8607           lib/silcutil/silchashtable.[ch].
8608
8609         * Changed the server's idlist routines to use the hash table
8610           routines to optimize the code.
8611
8612 Mon May 21 21:46:20 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8613
8614         * Replaced the client entry's `channel' list and channel entry's
8615           `user_list' list to hash tables for optimized lookup.  Changed
8616           the code to use the hash table interface around the code.
8617           Affected file lib/silcd/idlist.[ch].
8618
8619         * Added `auto_rehash' boolean argument to the function
8620           silc_hash_table_alloc to indicate whether the hash table should
8621           auto-rehash when it thinks is appropriate time.  It will
8622           increase the hash table size if the there is twice as much
8623           entries in the table than the size of the table, and will
8624           decrease the size if there are twice as less entries than
8625           the size of the table.
8626
8627 Mon May 21 09:51:11 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8628
8629         * Fixed silc_xxx_get_supported to not crash at some circumstances.
8630
8631 Sun May 20 13:45:58 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8632
8633         * silc_idcache_purge_by_context deletes the entry now by context
8634           as it is supposed to do.  Affected file lib/silccore/idcache.c.
8635
8636         * Send the ERR_NO_SUCH_NICK in the WHOIS command reply if the
8637           client is not anymore valid (WHOWAS givens the info) and not
8638           the ERR_NO_SUCH_CLIENT_ID if the nickname still exists.
8639
8640 Sat May 19 16:30:03 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8641
8642         * Removed the `data' and `data_len' arguments from the ID Cache
8643           interfaces and added `name' argument.  ID Cache does not handle
8644           anymore the binary data only a names associated with given ID.
8645
8646         * When hashing a Client ID with silc_hash_id the entire ID is
8647           not hashed anymore, instead only the hash of the Client ID is
8648           hashed.  This way we can access the Client ID from the cache
8649           with Client ID but with the hash of the ID (which is a hash of
8650           the nickname) as well without any difference in performance.
8651
8652           Added also silc_idcache_find_by_id_one_ext to do one on one
8653           searching when we have the actual ID.  Added also function
8654           silc_hash_client_id_compare.  The affected files are
8655           lib/silccore/idcache.[ch] and lib/silcutil/silcutil.[ch].
8656
8657         * When hashing the name associated with a ID it is always done
8658           in lowercase.  This way we can access the cache without worrying
8659           about case-sensitivity, even though, for example nicknames are
8660           case sensitive.
8661
8662         * Fixed a bug in server with channel message sending.  It put
8663           wrong ID type as destination ID.  The affected file
8664           silcd/packet_send.c.
8665
8666         * silc_idcache_del_by_context now deletes from all hash tables
8667           by context.  Affected file lib/silccore/idcache.c.
8668
8669 Fri May 18 17:42:00 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8670
8671         * Changed the client library to use the new ID Cache interface.
8672           Changes around the source tree.
8673
8674         * Added silc_hash_table_rehash_ext to rehash with specific
8675           hash function.  Affected file lib/silcutil/silchashtable.[ch].
8676
8677         * Added silc_hash_string_compare to compare two strings in the
8678           hash table.  Affected file lib/silcutil/silcutil.[ch].
8679
8680 Fri May 18 11:18:45 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8681
8682         * Added new function silc_idcache_del_by_context into the
8683           lib/silccore/idcache.[ch].
8684
8685         * Changed the server's ID list routines to use the new ID Cache
8686           interface.  Changes around the source tree.
8687
8688 Fri May 18 08:35:31 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8689
8690         * Added silc_hash_table_del[_by_context]_ext functions in to the
8691           lib/silcutil/silchashtable.[ch].
8692
8693           Removed silc_hash_table_find_all* routines and added new
8694           silc_hash_table_find_foreach to replace them.
8695
8696           Added silc_hash_table_replace_ext function as extended
8697           replacing function.  Separated the simple hash table interface
8698           from the extended hash table interface in the file
8699           lib/silcutil/silchashtable.h.
8700
8701         * Fixed minor bugs and changed it to use some of the new
8702           hash table functions in lib/silccore/idcache.c
8703
8704 Thu May 17 18:15:12 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8705
8706         * Added new function silc_hash_table_find_all to return all keys
8707           in the hash table by the specified key.  As the hash table is
8708           collision resistant it also makes it possible to have several
8709           duplicate keys in the hash table.  This function may be used to
8710           find all of the keys from the hash.
8711
8712           Added user_context arguments to the SilcHashFunction,
8713           SilcHashCompare and SilcHashDestructor to deliver user specified
8714           context.
8715
8716           Added new fuctions silc_hash_table_find[_all]_ext to do
8717           extended lookup with specified hash and compare functions and
8718           specified user contexts.
8719
8720           Added new function silc_hash_table_add_ext to add the key
8721           with specified hash function and user context.
8722
8723           Added new function silc_hash_table_foreach to traverse all
8724           entrys in the hash table.  Added SilcHashForeach callback
8725           function.
8726
8727           Added new function silc_hash_table_del_by_context to delete
8728           the entry only if the context associated with the key matches.
8729
8730           Affected files are lib/silcutil/silchashtable.[ch].
8731
8732         * Removed silc_hash_[server/client/channel]_id and added just
8733           silc_hash_id to the lib/silcutil/silcutil.[ch].  Added also
8734           silc_hash_id_compare to compare two ID's using as the hash table
8735           comparison function.  Added also silc_hash_data to hash
8736           binary data and silc_hash_data_compare to compare it.
8737
8738         * Removed silc_idlist_find_client_by_hash as it is not needed
8739           anymore.  Affected file silcd/idlist.[ch].
8740
8741         * Rewrote the entire ID Cache system (in lib/silccore/idcache.[ch])
8742           to use internally the SilcHashTable.  The new ID Cache is a lot
8743           faster than the old one.  Some of the ID Cache interface was also
8744           rewritten and obsolete and stupid functions were removed.
8745
8746 Wed May 16 23:03:30 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8747
8748         * Added entry_count field to the SilcHashTable to keep the number
8749           of the entries in the table.  Implemented the function
8750           silc_hash_table_rehash.  Added new function
8751           silc_hash_table_count.  Affected file lib/silcutil/silchashtable.c.
8752
8753           Fixed a minor bug in silc_hash_table_free.
8754
8755         * Added silc_hash_string, silc_hash_uint, silc_hash_ptr,
8756           silc_hash_client_id, silc_hash_server_id and silc_hash_channel_id
8757           into the lib/silcutil/silcutil.[ch].
8758
8759 Wed May 16 20:02:47 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8760
8761         * Implemented a collision resistant hash table into the
8762           lib/silcutil/silchashtable[ch].  See the header and the source
8763           for the SilcHashTable API.
8764
8765 Tue May 15 22:05:46 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8766
8767         * Merged dotconf version 1.0.2 into lib/dotconf.
8768
8769 Sun May 13 19:32:09 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8770
8771         * Do not compile anything in lib/silcsim/* if the SIM support
8772           is not enabled.  The tree should now compile without problems
8773           under cygwin.
8774
8775 Thu May 10 22:49:51 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8776
8777         * Compiled the SILC under cygwin.  Compiled and tested briefly
8778           without problems.  More tests needed.  The SIMs didn't compile
8779           though.
8780
8781         * Added various #ifdef HAVE_* stuff to lib/silccrypt/silrng.c.
8782
8783         * Fixed possible crash in silc_get_username in the
8784           lib/silcutil/silcutil.c.
8785
8786 Tue May  8 09:04:03 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8787
8788         * Fixed a va_arg in silc/client_ops.c.
8789
8790         * Oops, RC5 routines were named AES and caused some problems
8791           when not using SIM's.  Affected file lib/silccrypt/rc5.c.
8792
8793 Sun May  6 13:59:48 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8794
8795         * Added new SilcIDIP structure into the lib/silccore/id.h and
8796           replaced the old `ip' fields from all SILC ID's to that type.
8797           This is a step towards IPv6 support.
8798
8799           The silc_id_get_len takes now the ID as an extra argument.
8800           The silc_id_id2str, silc_id_str2id and silc_id_dup now supports
8801           both IPv4 and IPv6 based ID's.
8802
8803           The affected files are lib/silccore/id.[ch] and other files
8804           around the tree using these routines.
8805
8806         * Removed the ID length arguments in server from various
8807           silc_server_send_notify_* routines -> they are not needed
8808           anymore.
8809
8810 Sat May  5 13:56:33 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8811
8812         * Fixed memory leak in silc_encode_pem_file in the file
8813           lib/silcutil/silcutil.c.
8814
8815 Thu May  3 21:23:50 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8816
8817         * Check minor version as well in the SKE.  Affected files are
8818           silcd/protocol.c and lib/silcclient/protocol.c.
8819
8820         * Added --identifier option to the server so that an identifier
8821           can be when creating the public key for the server.  Affected
8822           file is silcd/silcd.c.
8823
8824         * Fixed minor decoding bug in silc_pkcs_decode_identifier in
8825           lib/silccrypt/silcpkcs.c.
8826
8827 Wed May  2 20:50:49 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8828
8829         * Register default ciphers and stuff when using -C option with
8830           the server.  Affected file sildc/silcd.c.
8831
8832         * Put back the servers public key filename format, it is better
8833           than the new one.  For now, the client keys are saved with the
8834           new filename format.  The affected file silc/client_ops.c.
8835
8836         * Implemented the Cipher API for the rest of the ciphers that
8837           did not implement it or implemented it the wrong way.
8838
8839 Wed May  2 13:31:26 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8840
8841         * Register default ciphers and stuff when using the -S option
8842           in the client.  Affected file silc/silc.c.  Same also when
8843           creating new key pair with -C option.
8844
8845 Tue May  1 14:18:13 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8846
8847         * Fixed the silc_verify_public_key client operation function to
8848           save the public keys differently.  The fingerprint is now
8849           used as filename and not the hostname.  This way also the
8850           client keys are saved uniquely and not with hostnames.  The
8851           affected file is silc/client_ops.c.
8852
8853         * Trimmed the silc_hash_fingerprint function to remove extra
8854           whitespaces from the end of the fingerprint.  The affected
8855           file is lib/silccrypt/silchash.c.
8856
8857         * Updated TODO.
8858
8859         * Added silc_cipher_register_default function to register all
8860           default ciphers.  It can be used when configuration files
8861           does not exist and the application does not want any specific
8862           ciphers in any specific order.
8863
8864           The SilcDList is now used as silc_cipher_list dynamically
8865           allocated cipher list.  Removed the static list all together
8866           and now all ciphers must be allocated to the dynamic list.
8867           The silc_cipher_alloc routine was changed to check only the
8868           dynamic list.
8869
8870           All silc_cipher_* routines that used to return int returns
8871           now bool.
8872
8873           The affected files lib/silccrypt/silccrypt.[ch].
8874
8875         * The same thing was done to silc_hash_* as for silc_cipher_*
8876           routines.  Affected files lib/silccrypt/silchash.[ch].
8877
8878         * The same thing was done to silc_pkcs_* as for silc_cipher_*
8879           routines.  Affected files lib/silccrypt/silcpkcs.[ch].
8880           Added also silc_pkcs_[un]register[_default] functions.
8881           Removed the data_context from the PKCS API.
8882
8883         * Added silc_hmac_register_default function to register default
8884           hmacs.  Affected files lib/silccrypt/silchmac.[ch].  Added also
8885           SILC_ALL_HMACS macro that can be used with silc_hmac_unregister
8886           to unregister all hmacs at once.
8887
8888         * Register the default ciphers, hash functions, PKCSs and HMACs
8889           if client's configuration file does not exist.  The affected
8890           file silc/silc.c.
8891
8892         * The client did not load the hash functions from the SIM
8893           modules at all.  Added support for this.  Affected file is
8894           silc/clientconfig.c.
8895
8896         * When decoding public key with silc_pkcs_public_key_decode, check
8897           the supported algorithm only if PKCS are registered.  Affected
8898           file lib/silccrypt/silcpkcs.c.  The same was done with the
8899           silc_pkcs_private_key_decode.
8900
8901         * Fixed the SILC List routines to keep the list always in order.
8902           It used to change the list's order when traversing the list but
8903           not it preserves the order.  Affected file lib/trq/silclist.h.
8904
8905 Mon Apr 30 17:29:03 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8906
8907         * Added the client library to use the SilcSocketConnection's
8908           reference counter (by silc_socket_dup) to prevent the bug that
8909           the socket object may be freed underneath async operation.
8910
8911         * The name resolv library checking fixes in the configure.in.pre.
8912           The patch by salo.
8913
8914         * Created new version of the protocol drafts for future
8915           development. The -03 drafts are the ones that will be changed
8916           in the trunk now and the -02 will remain as they are.
8917
8918         * Send list of CUMODE notifys to the router when announcing
8919           the channel users to the router.  Affected file silcd/server.c.
8920           If the router receiving channel founder CUMODE for a channel
8921           that already has channel founder it will send CUMODE notify
8922           to the sender to remove the channel founder rights from the
8923           announced client.  Affected file silcd/packet_receive.c.
8924
8925         * The CUMODE notify may now use Server ID as well as the entity
8926           who changes the mode.  Updated protocool specs.
8927
8928         * Updated INSTALL and README files.
8929
8930 Sun Apr 29 23:17:50 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8931
8932         * New web pages in the http://silc.pspt.fi.  The pages was
8933           designed by salo.
8934
8935         * Updated CREDITS.
8936
8937 Sun Apr 29 13:33:41 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8938
8939         * Implemented the [DenyConnectin] config section in the server.
8940           Added silc_server_config_denied_conn to check whether incoming
8941           connection is denied.  Affected file silcd/serverconfig.[ch].
8942
8943         * Do not check the ports when checking the incoming configuration
8944           data if the port is 0, meaning any.  Affected file is
8945           silcd/serverconfig.c.
8946
8947 Fri Apr 20 18:58:43 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8948
8949         * Fixed buffer overflow in silc_string_compare in the file
8950           lib/silcutil/silcutil.c.
8951
8952         * Fixed double free in silc_server_command_leave in the file
8953           silcd/command.c.
8954
8955 Fri Apr 20 14:00:11 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8956
8957         * Fixed the version checking in the server.  Affected file is
8958           silcd/protocol.c.
8959
8960 Thu Apr 19 19:52:46 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8961
8962         * Fixed the configuration data fetching when accepting new
8963           connections in the server.  Affected file silcd/server.c.
8964
8965 Thu Apr 19 11:40:20 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8966
8967         * Added `sender_entry' argument to the function
8968           silc_server_packet_relay_to_channel so that we can check
8969           whether some destination actually belongs to the same route
8970           the sender belongs (ie, we must not resend the packet to the
8971           sender).  Affected file silcd/packet_send.[ch].
8972
8973         * Added `servername' field to the SilcClientEntry in the server
8974           to hold the name of the server where client is from.  Affected
8975           file is silcd/idlist.h.
8976
8977 Wed Apr 18 22:19:03 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8978
8979         * Moved the channel message encrypting in the router betwen
8980           router connections from silc_server_channel_message to the
8981           silc_server_packet_relay_to_channel since we want to check
8982           whether we have anybody channel before encrypting anything.
8983           Affected files silcd/packet_[receive/send].c.
8984
8985 Tue Apr 17 21:18:19 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8986
8987         * Fixed the [AdminConnection] server config section to support
8988           multiple entries.  Affected file silcd/serverconfig.c.
8989
8990         * Added support into the server to check the validity of the
8991           incoming connection before executing any KE or authentication
8992           protocols.
8993
8994         * The connection configuration is now saved to the KE and
8995           connection auth protocol contexts and not fetched anymore in
8996           the protocol.  Affected files silcd/server.c, silcd/protocol.[ch].
8997
8998         * The local hosts listenning address and port is also resolved
8999           now when starting the server.  We want to have the socket object
9000           to include the real address and port for the listener.  Added
9001           new function silc_net_check_local_by_sock into the files
9002           lib/silcutil/silcnet.[ch].
9003
9004         * Fixed a broadcast bug in server -> do not broadcast if we
9005           are standalone.
9006
9007         * Fixed a routing bug.  Do not route broadcast packets ever.
9008           Broadcast packets must be processed always and not routed since
9009           they may be destined to some other host than yourself and thus
9010           would get routed without no good reason.  Affected file is
9011           silcd/server.c.
9012
9013         * Added function silc_server_config_is_primary_route to check
9014           whether primary router connection has been configured (a router
9015           configuration that we are initiating).  If there is not, we
9016           will assume that there is only two routers in the SILC network
9017           and we will use the incoming router connection as our primary
9018           route.  Affected files silcd/serverconfig.[ch], silcd/server.c.
9019
9020         * Changed the order of the broadcasting.  Broadcast _after_ the
9021           packet has been processed not before.  Affected file is
9022           silcd/server.c.
9023
9024         * Fixed a [ClientConnection] parsing bug.  The port was never
9025           parsed correctly thus resulting to port 0.  Affected file
9026           silcd/serverconfig.c.
9027
9028         * Fixed silc_server_send_notify_args -> it ignored the `broadcast'
9029           argument and did not set the broadcast packet flag.  Affected
9030           file silcd/packet_send.c.  Fixed same bug in the function
9031           silc_server_send_notify as well.
9032
9033         * If we receive NEW_ID packet for our own ID in the server, ignore
9034           the packet.
9035
9036 Mon Apr 16 12:10:33 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9037
9038         * Updated TODO.
9039
9040         * Removed the nickname from the Private Message Payload.
9041           Updated the code and the protocol specs.
9042
9043         * Updated protocol specs for submitting to the IETF.
9044
9045         * Tweaked the Random Number Generator a bit.  Affected file
9046           lib/silccrypt/silcrng.c.  Exported a new function
9047           silc_rng_[global]_add_noise which can be used to add more
9048           noise to the RNG.
9049
9050 Sat Apr 14 16:21:32 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9051
9052         * Do not parse packets with different timeout when protocol
9053           is active -> may cause problem with rekey.  Affected file
9054           silcd/server.c.
9055
9056         * When server receives signoff notify it must not create
9057           new channel key if the client is on any channels since the
9058           sender of the signoff notify will create it.
9059
9060 Fri Apr 13 17:12:46 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9061
9062         * Added printing of error messages during SKE protocol from the
9063           failure packet sent by server during SKE.  Affected file
9064           silc/client_ops.c.
9065
9066         * Removed the client's failure_callback handling with timeout
9067           and handle it immediately when received.
9068
9069         * The SKE library returned wrong type in SUCCESS and FAILURE
9070           packets.  They must be 32 bit MSB not 16 bit MSB.
9071
9072 Fri Apr 13 00:09:08 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9073
9074         * Ok, rewrote the logic of the re-key and now it seems to work.
9075           I tested it on high traffic with frequent re-keys without
9076           problems.  Added hmac_receive (and renamed hmac to hmac_send)
9077           in SilcClientConnection in lib/silcclient/client.h and
9078           in SilcIDListData in silcd/idlist.h.  Also, removed the
9079           SilcPacketParserContext's cipher and hmac fields as they are
9080           not needed anymore and actually caused some problems when
9081           the ciphers and hmac's changed underneath the packet parser.
9082
9083 Thu Apr 12 14:42:51 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9084
9085         * If re-key protocol is active then process the incoming packets
9086           synchronously since we must assure that icoming packets encrypted
9087           with the old key is processed before the new keys is set to
9088           use.  This is true other packets than for REKEY packets.
9089           Affected file silcd/server.c.  The same was done to client library
9090           as well, affected file lib/silcclient/client.c.
9091
9092 Thu Apr 12 12:01:52 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9093
9094         * Fixed bug in client and server to accept the force send if
9095           the packet is send from silc_[server/client]_packet_process
9096           function.  Otherwise the packets are never delivered, oops.
9097
9098 Wed Apr 11 22:10:15 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9099
9100         * Disable force sending of packets when REKEY protocol is active.
9101           We must assure that no packet is sent directly when rekey is
9102           performed.  All packets must be sent through packet queue.
9103           Added macro SILC_SERVER_IS_REKEY to silcd/server.h and
9104           SILC_CLIENT_IS_REKEY to lib/silcclient/client.h.  Affected
9105           function is silc_[server/client]_packet_send_real to check
9106           the situation.
9107
9108         * Replaced the SIM paths from example config files to
9109           /usr/local/modules.  Also, make install creates now
9110           /usr/local/silc/logs directory to hold all the SILC server
9111           logs.
9112
9113 Wed Apr 11 16:59:59 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9114
9115         * Made the configure.in.pre work on Solaris.  Patch by salo.
9116
9117         * Made all ciphers compatible with non-x86 machines.  Defined
9118           CBC mode macros into lib/silccrypt/ciphers_def.h.
9119
9120 Tue Apr 10 20:32:44 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9121
9122         * Fixed the make install.
9123
9124 Tue Apr 10 16:20:34 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9125
9126         * When MAC computation fails the silc_packet_decrypt returned 0
9127           even though it was supposed to return -1.  Fixed this.  The
9128           affected file is lib/silccore/silcpacket.c.
9129
9130         * Do not replace the config files in /etc/silc (in make install)
9131           if they already exist.  Affected file ./Makefile.am.
9132
9133         * Do not send re-key packets immediately but through packet queue.
9134           Affected file silcd/protocol.c and lib/silcclient/protocol.c.
9135
9136         * Changed silc_net_check_host_by_sock to return FALSE if the
9137           IP/DNS could not be resolved.  Though, it returns the IP address
9138           now even if it could not resolve it (but returns also FALSE).
9139           Affected file lib/silcutil/silcnet.[ch].
9140
9141 Mon Apr  9 21:54:44 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9142
9143         * Added silc_pkcs_decode_identifier to decode the public key's
9144           identifier.  Affected file lib/silccrypt/silpkcs.[ch].
9145           Added also silc_pkcs_free_identifier.  Added also new context
9146           SilcPublicKeyIdentifier.
9147
9148         * Added -S option to the silc client.  It is used to dump the
9149           contents of the specified public key file.
9150
9151         * Changed the PKCS api to return the public key length when
9152           setting the public key.
9153
9154         * Fixed a fatal bug in the public and private key file loading.
9155           Affected file lib/silccrypt/silcpkcs.c.
9156
9157         * Execute the packet parsing for client with zero (0) timeout
9158           if the protocol is active.  Affected file silcd/server.c.
9159
9160 Sun Apr  8 19:30:56 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9161
9162         * Made the key generation options to the silcd program.  Added
9163           -C option, equivalent to client's option.
9164
9165         * Added new [ServerKeys] config section to the server.  It
9166           configures the server's public and private key.
9167
9168         * Defined generic Public Key Payload into the protocol
9169           specification to send specific type of public keys and
9170           certificates.
9171
9172         * Defined new command SILC_COMMAND_GETKEY to fetch a client's
9173           public key or certificate.
9174
9175         * Implemented the GETKEY command to the server and to the
9176           client library and on user interface.
9177
9178 Sun Apr  8 01:37:21 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9179
9180         * Made preliminary `make install' work.
9181
9182 Thu Apr  5 17:42:30 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9183
9184         * Added SilcServerRekey context into silcd/idlist.h.
9185
9186         * Added the PFS support as defined in the specification to the
9187           SKE protocol.  Affected files lib/silcske/*.c.
9188
9189         * Added `ske_group' field to the SilcServerRekey context to hold
9190           the number of the SKE group that is used with PFS in re-key.
9191           Affected file silcd/idlist.h.
9192
9193         * Added PFS re-key support to the server.  Affected file is
9194           silcd/protocol.c.
9195
9196         * Added silc_protocol_cancel to cancel execution of the next
9197           state of the protocol.  Affected file is
9198           lib/silccore/silcprotocol.[ch].
9199
9200         * Added the re-key support with and without PFS to the client
9201           library.  Re-key is performed once in an hour, by default.
9202
9203           Added new protocol type SILC_PROTOCOL_CLIENT_REKEY.
9204           Added silc_client_rekey_callback and silc_client_rekey_final.
9205           Affected files are lib/silcclient/protocol.[ch] and
9206           lib/silcclient/client.[ch].
9207
9208         * Removed the `hmac_key' and `hmac_key_len' fields from the
9209           SilcClientConnection structure; not needed.  Affected file is
9210           lib/silcclient/client.h.
9211
9212         * Updated TODO.
9213
9214 Wed Apr  4 16:32:31 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9215
9216         * Do not ask whether user wants to use the negotiated private key
9217           for private messages, just use it.  Affected file is
9218           silc/local_command.c.
9219
9220         * Added `send_enc_key' and `enc_key_len' fields to the
9221           SilcIDListData structure since they are needed in the re-key
9222           phase.  Affected file is silcd/idlist.[ch].
9223
9224         * Implemented the simple re-key protocol into the server.
9225           Affected files silcd/server.c and silcd/protocol.[ch].  The
9226           re-key will be performed once in an hour, by default.
9227
9228           Added new protocol type SILC_PROTOCOL_SERVER_REKEY.
9229           Added silc_server_rekey, silc_server_rekey_callback and
9230           silc_server_rekey_final.
9231
9232         * Removed Tunneled flag from the protocol.  Updated the code
9233           and the specifications.
9234
9235         * Adde `pfs' field to the SilcIDListData to indicate whether
9236           the PFS is to be performed in the re-key.  Affected file is
9237           silcd/idlist.h.
9238
9239 Tue Apr  3 21:52:42 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9240
9241         * Defined uint8, int8, uint16, int16, uint32, int32, uint64 and
9242           int64 of at least the xintXX size.  If void * is less that 4
9243           bytes uint32 * will be used.  Defined bool as boolean.
9244
9245         * Changed _ALL_ unsigned long and unsigned int to uint32,
9246           unsgined short to uint16 in the source tree.
9247
9248         * Fixed a fatal bug in silc_server_remove_clients_by_server.  Do
9249           not handle clients that has entry->data.registered == FALSE.
9250           They are not in the network anymore.  Affected file is
9251           silcd/server.c.
9252
9253 Tue Apr  3 16:39:19 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9254
9255         * Implemented the sending of the SERVER_SIGNOFF notify in the
9256           server.  Affected file is silcd/server.c.
9257
9258         * Added silc_server_send_notify_args into silcd/packet_send.[ch].
9259           Added also silc_notify_payload_encode_args into the
9260           lib/silccore/silcnotify.[ch].
9261
9262         * Implemented ther SERVER_SIGNOFF notify handling in the server.
9263           Affected file silcd/packet_receive.c.
9264
9265         * Implemented the SERVER_SIGNOFF notify handling in the client
9266           library.  Affected file lib/silcclient/client_notify.c.  Also,
9267           implemnted the printing of the SERVER_SIGNOFF info to the
9268           application.  Affected file silc/client_ops.c.
9269
9270         * The silc_idlist_del_server now returns TRUE or FALSE to indicate
9271           if the deleting was successful.  Affected file silcd/idlist.[ch].
9272
9273         * Added support for public key authentication in the connection
9274           authentication protocol in the client library.  Affected file
9275           lib/silcclient/protocol.c.
9276
9277         * Changed the server's silc_idlist_get_clients_by_* interface
9278           to support already allocated array so that new entries may be
9279           added to pre-allocated array.  Affected file silcd/idlist.[ch].
9280           This fixes some bugs with WHOIS, WHOWAS and IDENTIFY commands
9281           and command replies.
9282
9283         * All command reply functions in the server now calls the
9284           pending command callback even if error occured.  This way the
9285           error will be delivered to the client as well.  Affected files
9286           silcd/command.c and silcd/command_reply.c.
9287
9288         * Fixed INFO command to return local server's info if no server
9289           was provided.  Affected file lib/silcclient/command.c.
9290
9291         * Removed RESTART command for good.  Updated the code and the
9292           protocol specs.
9293
9294         * Rewrote parts of the task system.  It is a bit simpler now.
9295           Removed unsued task priorities. The affected files are
9296           lib/silcutil/silctask.[ch].
9297
9298 Mon Apr  2 20:02:33 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9299
9300         * Moved the USERS printing from the library to the application.
9301           Affected files lib/silcclient/command.c and silc/client_ops.c.
9302
9303 Mon Apr  2 13:13:23 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9304
9305         * Updated TODO.
9306
9307         * Added channel key re-key support.  The re-key is perfomed
9308           only by the router and is done once in an hour.  Added `rekey'
9309           field to the SilcChannelEntry in the server.  Affected files
9310           silcd/server.c and silcd/idlist.h.
9311
9312         * Added silc_task_unregister_by_context into the file
9313           lib/silcutil/silctask.[ch].
9314
9315 Sun Apr  1 19:49:34 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9316
9317         * Added SILC_UMODE_GONE mode to indicate when the client is not
9318           present in the SILC network.  Added also support to the local
9319           command AWAY that will set this mode.  Added support of showing
9320           "xxx is gone" in WHOIS command.  The USERS command shows the
9321           gone status as well.
9322
9323         * Fixed setting server and router operator privileges in the
9324           server's UMODE command.  Affected file silcd/command.c.
9325
9326         * Merged the SKE KE1 and KE2 payloads into one payload.  The
9327           new KE payload is equivalent to the old KE2 payload.
9328
9329           Cleaned up the SKE Start Payload parsing.  It now uses the
9330           simple buffer unformatting to do the parsing.  A lot faster
9331           now.
9332
9333           Added new Mutual Authentication flag (SILC_SKE_SP_FLAG_MUTUAL)
9334           to the SKE that is used to indicate whether both of the SKE
9335           parties should perform authentication.  By default only the
9336           responder performs authentication.  By setting this flag also
9337           the initiator must do authentication.  By default it is unset
9338           since in normal SKE case, client to server connection, only
9339           the responder should do authentication.  When doing SKE between
9340           two clients both should perform authentication.  Updated the
9341           code and the protocol specs.
9342
9343         * A little fix to IDENTIFY command in the server.  Search the
9344           client first by hash not nickname.  Affected file is
9345           silcd/command.c.
9346
9347         * Fixed the silc_client_close_connection to support closing
9348           the client to client connections wihtout deleting too much
9349           data.  Affected file lib/silcclient/client.c.
9350
9351         * Fixed a fatal bug in server and client; if KE1 or KE2 packets
9352           are received if protocol used to be active but is not anymore
9353           the application would crash due to NULL pointer dereference.
9354           Affected files silcd/server.c and lib/silcclient/client.c.
9355
9356         * Added `hash' field to the SilcClientConnection to include
9357           the hash function negotiated in the SKE protocol.
9358
9359         * Added new channel mode SILC_CMODE_FOUNDER_AUTH that is used
9360           to set the channel founder authentication data.  A client can
9361           claim the founder rights later by providing the authentication
9362           data to the CUMODE command using SILC_CUMODE_FOUNDER mode.
9363           This way the channel founder can regain the channel founder
9364           privileges even it is left the channel.  This works only on
9365           local server and the client must be connected to the same
9366           server to be able to regain the founder rights.  Updated the
9367           protocol specs accordingly.
9368
9369           Added support to the CMODE command in the client to set the
9370           founder auth data.  Read the README to see how to set it.
9371
9372           Added support to the CUMODE command to claim the founder
9373           rights.  Read the README to see how to do it.
9374
9375           Added support for the founder authentication to the Channel
9376           Entry in the server.  Affected file silcd/idlist.h.
9377
9378           Added support for the SILC_CMODE_FOUNDER_AUTH mode in the
9379           server's CMODE command.  Affected file silcd/command.c.
9380
9381         * Added the following new functions into lib/silccore/silcauth.[ch]:
9382           silc_auth_get_method and silc_auth_get_data.
9383
9384         * The server now saves the remote hosts public key to the
9385           SilcIDListData pointer.  Affected file silcd/protocol.c.
9386
9387         * The normal server now does not remove the channel entry from
9388           the cache if the founder authentication data is set.  It used
9389           to remove it if the founder was the last one on the channel on
9390           the server and left the channel.  The auth data is saved and
9391           if the channel is re-joined later the old entry is used with
9392           the old auth data.  Affected files silcd/command_reply.c and
9393           silcd/server.c.
9394
9395         * Removed the `pkcs' field from the SilcIDListData structure
9396           in the server; it is not used.  Affected file silcd/idlist.h.
9397
9398 Sat Mar 31 15:38:36 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9399
9400         * Fixed packet processing on slow links.  Partial packets were
9401           never re-processed because the incoming data buffer was cleared
9402           by the application.  Application must not directly clear the
9403           sock->inbuf, the packet processing routines handle it.  Fixed
9404           this in client library and in server.
9405
9406 Fri Mar 30 16:35:27 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9407
9408         * Fixed the WHOIS and IDENTIFY send reply function to really
9409           check whether to send list or just one entry.  Affected file
9410           silcd/command.c.
9411
9412         * Cleaned up the LEAVE command's channel key distribution.  The
9413           affected file silcd/command.c.
9414
9415         * Changed CMODE_CHANGE's <Client ID> to <ID Payload> as server
9416           can enforce the channel mode as well.  In that case the ID
9417           includes the ID of the server.  The code now enforces the
9418           mode change if the router have different mode than the server.
9419
9420         * The notify client operation with CMODE_CHANGE notify can now
9421           return NULL client_entry pointer if the CMODE was not changed
9422           by client.  Application must check for this.
9423
9424         * Added <Server ID> argument to INFO command to support server
9425           info fetching by Server ID.
9426
9427         * Added silc_server_announce_get_channel_users to get assembled
9428           packets of channel users of the specified channel.  Affected
9429           file silcd/server.[ch].
9430
9431         * Fixed bug in CHANNEL_CHANGE notify in the server.  The new ID
9432           was freed underneath the ID Cache.
9433
9434         * Re-announce clients when the server received CHANNEL_CHANGE
9435           notify from the router.  Affected file silcd/packet_send.c.
9436
9437 Thu Mar 29 19:10:28 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9438
9439         * Fixed a fatal bug when client does /join 1 2 3 4 5 6 the server
9440           crashed since it did not handle the fact that there is no cipher
9441           called "3" and didn't check the error condition.  Now fixed.
9442
9443         * Added SILC_MESSAGE_FLAG_REQUEST message flag as generic request
9444           flag.  It can be used to send message requests.
9445
9446 Thu Mar 29 12:26:25 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9447
9448         * Implemented the RESTART command in the client.
9449
9450         * Added SILC_MESSAGE_FLAG_NOTICE message flag for informational
9451           notice type messages.  Added notice printing to the user
9452           interface.
9453
9454         * The channel keys are not re-generated if the channel's mode
9455           is PRIVKEY, ie private key on the channel exists.  Affected
9456           files silcd/server.c and silcd/command.c.
9457
9458         * Fixed a little bug in channel message delivery when channel
9459           private keys are set in the server.  Affected file is
9460           silcd/packet_send.c.
9461
9462         * Changed the setting on channel->on_channel = TRUE from the
9463           silc_client_save_channel_key to the JOIN command reply.  The
9464           key payload is not received if the private channel key is set.
9465           Affected file lib/silcclient/command_reply.c and the
9466           lib/silcclient/client_channel.c.
9467
9468         * When the CMODE_CHANGE notify is sent and the channel private
9469           key mode is removed the channel key must be re-generated in
9470           other cells as well.  Added this support for the router in the
9471           silcd/packet_receive.c.
9472
9473         * Added new local command NOTICE to send notice message on
9474           channel.  Affected file silc/local_command.[ch].
9475
9476 Wed Mar 28 23:55:54 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9477
9478         * Added new local command ME to the client.  It is used to send
9479           message to a channel with SILC_MESSAGE_FLAG_ACTION to indicate
9480           some action.  Affected file silc/local_command.[ch].
9481
9482         * Changed channel_message and private_message client operations
9483           to deliver the message flags to the application.  Added also
9484           the `flags' arguments to the silc_client_send_channel_message
9485           and silc_client_send_private_message functions.  Affected file
9486           silcapi.h.
9487
9488 Wed Mar 28 20:50:47 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9489
9490         * Redefined the Private Message Payload to support private message
9491           keys and to support the new private message flags.  Updated
9492           the protocol specs.  Flags makes it possible to have for example
9493           CTCP style messages.
9494
9495         * Added new type SilcPrivateMessagePayload and defined an API
9496           for it in the lib/silcclient/silcprivate.[ch].
9497
9498         * Tested private message private keys successfully.  Tested the
9499           private message key set, unset and list commands with the new
9500           KEY command.
9501
9502         * Redefined the Channel Message Payload to include the channel
9503           message flags (equal with private message flags) to support
9504           for example CTCP style messages.
9505
9506         * Defined some of the message (for channel and private message)
9507           flags.  Updated the protocol specs and added the flags to the
9508           lib/silccore/silcchannel.h.  The type is SilcMessageFlags.
9509
9510 Wed Mar 28 15:52:36 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9511
9512         * Added SilcKeyAgreementStatus type to the key agreement routines
9513           to indicate the current status and error if one occured.
9514           The status types are defined in the lib/silcclient/silcapi.h.
9515
9516         * Added new local command KEY that is used to set and unset private
9517           keys for channels, set and unset private keys for private messages
9518           with remote clients and to send key agreement requests and
9519           negotiate the key agreement protocol with remote client.  The
9520           key agreement is supported only to negotiate private message keys,
9521           it currently cannot be used to negotiate private keys for channels,
9522           as it is not convenient for that purpose.
9523
9524         * Fixed a minor pending callback setting bug in the function
9525           silc_client_get_client_by_id_resolve, now the function works.
9526           Affected file lib/silcclient/idlist.c.
9527
9528         * Added function silc_net_get_local_port to get local bound
9529           port by socket.  Added to lib/silcutil/silcnet.[ch].
9530
9531         * Added `sockets' and `sockets_count' fields to the SilcClient
9532           object.  They hold the sockets of the listenning sockets in
9533           the client.  Listenning sockets may be for example the key
9534           agreement server.  Affected file lib/silcclient/client.[ch].
9535           Added functions the silc_client_add_socket and the
9536           silc_client_del_socket.  They are exported to the application
9537           as well.
9538
9539         * Added ~./silc/clientkeys to support other client's public keys.
9540
9541         * Renamed verify_server_key client operation to verify_public_key
9542           and added one argument to indicate the type of the connection
9543           (server, client etc.).
9544
9545 Tue Mar 27 22:22:38 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9546
9547         * Added silc_server_connection_auth_request to handle the
9548           incoming CONNECTION_AUTH_REQUEST packet.  Affected file is
9549           silcd/packet_receive.[ch].
9550
9551         * Added silc_server_send_connection_auth_request into the
9552           silcd/packet_send.c to send the connection auth request packet.
9553
9554         * Cleaned up the silcd/protocol.c a bit and fixed some memory
9555           leaks.
9556
9557         * Fixed the public key authentication in responder side in the
9558           server.  The `auth_data' pointer includes the SilcPublicKey
9559           not the path to the public key.  Affected file silcd/protocol.c.
9560
9561         * Implemented the public key authentication in the initiator side
9562           in the server.  Affected file silcd/protocol.c.
9563
9564         * Removed the [RedirectClient] config section from the server
9565           configuration.  Is not needed and I don't want to implement it.
9566
9567 Tue Mar 27 12:49:56 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9568
9569         * Cleaned up the CMODE command in the server.  It now works
9570           correctly and supports all the modes defined in the protocol.
9571           Affected file is silcd/command.c.
9572
9573         * Added `hmac_name' field to the SilcChannelEntry in the server
9574           to hold the default HMAC of the channel.  It can be set when
9575           creating the channel (with JOIN command).  Affected files
9576           silcd/idlist.[ch].
9577
9578         * Added <cipher> and <hmac> argument to the CMODE_CHANGE notify
9579           type to indicate the change of the current cipher and hmac
9580           on the channel.  Client can safely ignore the <cipher> argument
9581           (if it chooses to do so) since the CHANNEL_KEY packet will
9582           force the channel key change anyway.  The <hmac> argument is
9583           important since the client is responsible of setting the new
9584           HMAC and the hmac key into use.
9585
9586         * Fixed the CMODE command in the client library as well.
9587
9588         * Tested CMODE command in router environment successfully.
9589
9590 Mon Mar 26 14:39:48 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9591
9592         * Show the version of the remote client (or server) when connecting
9593           to the server.  It is logged to the log file.  Affected file
9594           is silcd/protocol.c.
9595
9596         * Fixed the KILLED notify handling in the client library.  The
9597           client must be removed from all channels when receiving the
9598           KILLED notify.
9599
9600           Also, do not remove the client entry when giving the KILL
9601           command but when the KILLED notify is received.
9602
9603         * Removed silc_idlist_find_client_by_nickname from the server.
9604           Not needed anymore.  Affected files silcd/idlist.[ch].
9605
9606         * Implemented the CHANNEL_CHANGE notify type handling to the
9607           server.  Affected file silcd/server.c.
9608
9609         * Updated TODO.
9610
9611 Mon Mar 26 12:11:14 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9612
9613         * Added silc_server_send_notify_invite to send the INVITE
9614           notify between routers.
9615
9616         * Implemented the INVITE command correctly to the server.
9617
9618         * Implemented the INVITE notify type handling in the server.
9619
9620         * Implemented the INVITE command to the client library and on the
9621           user interface.
9622
9623 Sun Mar 25 20:27:09 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9624
9625         * Added function silc_server_get_client_resolve to find the
9626           client entry by ID from all ID lists and then resolve it
9627           (using WHOIS) if it cannot be found.  Affected file is
9628           silcd/server.[ch].
9629
9630 Sun Mar 25 13:52:51 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9631
9632         * Implemented the BAN command to the client library.
9633
9634         * The JOIN command in the server now checks the invite list
9635           and the ban list.
9636
9637         * Changed the silc_command_reply_payload_encode_va and the
9638           silc_command_payload_encode_va to support that if argument is
9639           NULL it ignores and checks the next argument.  Affected file
9640           lib/silccore/silccommand.c.
9641
9642         * Added silc_server_send_notify_ban to send the BAN notify
9643           type between routers.
9644
9645         * Chaned the silc_notify_payload_encode to support that if
9646           argument is NULL it ignores and checks the next argument.
9647           Affected file lib/silccore/silcnotify.c.
9648
9649         * Tested ban lists in router environment successfully.
9650
9651 Sat Mar 24 14:47:25 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9652
9653         * Implemented BAN command to the server, in silcd/command.[ch].
9654
9655         * Removed the BAN and INVITE_LIST modes from the CMODE command
9656           in the server code.
9657
9658         * Added function silc_string_match to regex match two strings.
9659           Affected files lib/silcutil/silcutil.[ch].
9660
9661 Fri Mar 23 22:02:40 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9662
9663         * Redefined parts of the SilcChannelEntry in the server to support
9664           the new ban and invite lists.
9665
9666 Fri Mar 23 16:25:11 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9667
9668         * Redefined the INVITE command.  The same command can be used to
9669           invite individuals to the channel but also to manage the invite
9670           list of the channel (to add to and remove from the invite list).
9671           Updated the protocol specs.
9672
9673         * Added new command SILC_COMMAND_BAN that can be used to manage
9674           the ban list of the channel.  Updated the protocol specs.
9675
9676         * Removed the channel modes: the SILC_CMODE_BAN and the
9677           SILC_CMODE_INVITE_LIST as they were a bit kludge to be included
9678           in the CMODE command.  The equivalent features are now available
9679           using INVITE and BAN commands.  Updated the protocol specs.
9680
9681         * Added new SILC_NOTIFY_TYPE_BAN notify type to notify routers
9682           in the network about change in the current ban list.  The notify
9683           type is not used by the client.
9684
9685         * Redefined parts of the SILC_NOTIFY_TYPE_INVITE command to
9686           support the invite lists.
9687
9688 Thu Mar 22 22:52:23 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9689
9690         * Added new function silc_string_regexify that converts string
9691           including wildcard characters into regex string that can
9692           be used by the GNU regex library.  Added into the file
9693           lib/silcutil/silcutil.[ch].
9694
9695           Added silc_string_regex_combine to combine to regex strings
9696           into one so that they can be used as one regex string by
9697           the GNU regex library.  Added into the file
9698           lib/silcutil/silcutil.[ch].
9699
9700           Added silc_string_regex_match to match two strings.  It returns
9701           TRUE if the strings match.  Added into lib/silcutil/silcutil.[ch].
9702
9703 Thu Mar 22 15:29:42 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9704
9705         * Imported GNU regex to the soruce tree into lib/contrib.
9706           Fixed some compiler warning from the regex.c.
9707
9708 Wed Mar 21 15:27:58 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9709
9710         * Fixed MOTD command in the server to work in router environment.
9711
9712         * Fixed the MOTD command in the client library to support
9713           the server argument in the command.
9714
9715         * Added `nickname_len' argument to the silc_idlist_add_client
9716           in the server, as the `nickname' argument may be binary data
9717           (it may be hash).
9718
9719         * Added silc_idlist_get_channels to return all channels from
9720           the ID list.
9721
9722         * Implemented LIST command to the server.  Affected file is
9723           silcd/command.c.
9724
9725         * Implemented the LIST command to the client library and on the
9726           user interface.
9727
9728         * Added [<user count>] argument to the LIST command reply.
9729           With private channels the user count is not shown.
9730
9731         * Updated TODO and README.
9732
9733 Tue Mar 20 21:05:57 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9734
9735         * The client entry's data.registered must be TRUE even with
9736           global client entry on global client list.  The data.registered
9737           is used to check whether the client is anymore in the network,
9738           for example with WHOWAS command so it must be valid.
9739
9740         * Fixed the WHOWAS command in the server.  It now actually works
9741           in router environment.  Added function into silcd/command_reply.c
9742           silc_server_command_reply_whowas_save.
9743
9744         * Added silc_idlist_purge function to the silcd/idlist.c
9745           to periodically purge the ID Cache.
9746
9747         * Fixed INFO command in the server.  It works now in router
9748           environment.  Added <server name> argument to the INFO command
9749           reply.  Updated the protocol specs.
9750
9751         * Fixed minor bug in silc_idcache_purge to not purge if the
9752           expire value is zero.
9753
9754         * Fixed various bugs in WHOIS and IDENTIFY command handling as
9755           they were buggy because of the WHOWAS information.
9756
9757         * Fixed local command MSG to handle the async resolving of
9758           the remote client properly.  It used to fail the first MSG.
9759           Affected file silc/local_command.c.
9760
9761         * Added `data_len' field to SilcIDCache context.
9762
9763 Tue Mar 20 16:29:00 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9764
9765         * Update TODO.  Todo in commands in the server.
9766
9767 Tue Mar 20 15:45:14 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9768
9769         * Added new notify type SILC_NOTIFY_TYPE_UMODE_CHANGE that is
9770           used by routers as broadcast packet to inform other routers
9771           about the changed user mode.
9772
9773           Implemented the notify handling in the server.  Affected file is
9774           silcd/packet_receive.c.  Added the function
9775           silc_server_send_notify_umode to the silcd/packet_send.[ch].
9776
9777         * Added new generic Channel Payload and deprecated the New Channel
9778           Payload.  The New Channel Payload is now the generic Channel
9779           Payload.
9780
9781         * Added new argument `mode' to the silc_server_send_new_channel
9782           as it is required in the Channel Payload now.
9783
9784         * Renamed the SilcChannelPayload to SilcChannelMessagePayload
9785           and created a new and real SilChannelPayload to represent the
9786           new generic Channel Payload.  Implemented the encode/decode
9787           for Channel Payload.  Affected file lib/silccore/silcchannel.[ch].
9788
9789         * Added silc_server_get_client_channel_list to return the list
9790           of channels the client has joined for WHOIS command reply.
9791           Affected file silcd/server.[ch].
9792
9793         * Implemented the channel list sending in the WHOIS command reply
9794           in server and in the client.
9795
9796           Implemented the channel list displaying on the user interface
9797           as well.  Affected file silc/client_ops.c.
9798
9799         * Added silc_channel_payload_parse_list to parse list of Channel
9800           Payloads.  It returns SilcDList list of SilcChannelPayloads.
9801           Client for example can use this function to parse the list of
9802           channels it receives in the WHOIS command reply.  The caller
9803           must free the list by calling silc_channel_payload_list_free.
9804           Affected files lib/silccore/silcchannel.[ch].
9805
9806 Mon Mar 19 21:39:15 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9807
9808         * Added one new argument <user mode> to the WHOIS command reply
9809           to return the mode of the user in SILC.  Updated the protocol
9810           specs.
9811
9812           Implemented it to the server and client.
9813
9814 Mon Mar 19 18:43:06 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9815
9816         * Fixed the mode printing on the user interface on joining.
9817           Affected file silc/client_ops.c.
9818
9819         * Implemented the UMODE command and user modes in general to the
9820           client library and to the user interface.
9821
9822         * Implemented the UMODE command to the server.
9823
9824         * The server now sends UNKNOWN_COMMAND error status if client sends
9825           unknown command.  Affected file silcd/command.c.
9826
9827         * All server commands now handle the command identifier the right
9828           way when sending the command reply to the client.  The client can
9829           use to identify the command replies with the identifier.
9830
9831 Mon Mar 19 16:13:07 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9832
9833         * Added silc_server_get_client_route to resolve the route to
9834           the client indicated by the client ID.  Affected file is
9835           silcd/server.[ch].
9836
9837         * Added silc_server_relay_packet as general function to relay
9838           packet to arbitrary destination.  This deprecates functions
9839           like _send_private_message_key, _relay_notify etc.  Affected
9840           file is silcd/packet_send.[ch].
9841
9842           Removed silc_server_send_key_agreement,
9843           silc_server_send_private_message_key and
9844           silc_server_packet_relay_notify functions from the file
9845           silcd/packet_send.[ch].
9846
9847         * Updated TODO.
9848
9849         * Implemented the SILC_NOTIFY_TYPE_KILLED notify handling in the
9850           server.  Affected file silcd/packet_receive.[ch].
9851
9852         * Implemented the KILL command to the client.  Implemented the
9853           SILC_NOTIFY_TYPE_KILLED notify handling in the client library.
9854           Affected files lib/silcclient/command[_reply].c and
9855           lib/silcclient/client_notify.c.  Implemented the KILL notify
9856           printing in the user inteface.
9857
9858         * Fixed a lot silc_parse_nick memory leaks from the client
9859           library in the file lib/silcclient/command.c.
9860
9861         * Changed the silc_server_send_notify_on_channels's `sender'
9862           argument from SilcSocketConnection to SilcClientEntry to
9863           check the sender as entry and not as connection object and not
9864           to send to the client provided as argument.  The affected file
9865           is silcd/packet_send.[ch].
9866
9867         * The notify packets that are destined directly to the client used
9868           to not to be processed by the server.  Now changed that and the
9869           server processes all notify packets.  After relaying the packet
9870           to the client the notify packet is processed in the server.
9871
9872         * The silc_server_free_client_data now checks whether there is
9873           pending outgoing traffic for the client and purges the data to
9874           the network before removing the client entry.
9875
9876 Sun Mar 18 21:02:47 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9877
9878         * Added SILC_NOTIFY_TYPE_KILLED notify type.  It is sent when
9879           an client is killed from the SILC Network.  Updated the protocol
9880           specs accordingly.
9881
9882           Added new function silc_server_send_notify_killed to the
9883           silcd/packet_send.[ch].
9884
9885         * Added function silc_server_packet_relay_notify to relay notify
9886           packets that are destined directly to a client.  In this case
9887           the server does not process the notify packets but merely relays
9888           it to the client.  Affected file silcd/packet_send.[ch].
9889
9890           Added also silc_server_packet_process_relay_notify to check
9891           whereto relay the notify.  Affected file is
9892           silcd/packet_receive.[ch].
9893
9894         * Implemented the KILL command to the server.
9895
9896         * Updated TODO.
9897
9898         * Added the backup schema desgined last fall to the protocol
9899           specs for everyone to see.  The specification is in the
9900           *-spec-xx.txt draft and the packet type definitions for the
9901           backup routers is in *-pp-xx.txt draft.  Thusly, added also
9902           new packet type SILC_PACKET_CELL_ROUTERS.
9903
9904         * A big security problem in the implementation discovered.  The
9905           signoff of an client did not cause new channel key generation
9906           which it of course should've done.  The channel keys must be
9907           always re-generated when client leaves (or signoffs) the channel.
9908           The silc_server_remove_from_channels funtion now handles
9909           the channel key re-generation.
9910
9911         * Added `sender' argument to the silc_server_send_notify_on_channels
9912           to not to send the client provided as argument.  Affected file
9913           silcd/packet_send.[ch].
9914
9915 Fri Mar 16 15:52:49 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9916
9917         * Implemented OPER and SILCOPER commands into the server and
9918           the client library.
9919
9920         * Added silc_auth_verify and silc_auth_verify_data to verify
9921           the authentication directly from the authentication payload.
9922           It supports verifying both passphrase and public key based
9923           authentication.  Affected file lib/silccore/silcauth.[ch].
9924
9925         * Added `hash' field to the SilcIDListData structure.  It is the
9926           hash negotiated in the SKE protocol.  Affected file is
9927           silcd/idlist.[ch].
9928
9929         * Slight redesigning of the SilcAuthPayload handling routines.
9930           Do not send SilcPKCS but SilcPublicKey as argument.
9931
9932         * Implemented the public key authentication support to the
9933           serverconfig.  The public key is loaded from the provided path
9934           and saved as authentication data to void * pointer.  Thus,
9935           changed the unsigned char *auth_data to void *auth_data;
9936
9937         * Fixed SHUTDOWN command to send the reply before the server
9938           is shutdown. :)  Affected file silcd/command.c.
9939
9940         * Fixed fatal bug in CONNECT command.  The hostname was invalid
9941           memory and server crashed.  Affected file silcd/command.c.
9942
9943         * Fixed fatal bug in CLOSE command.  The server_entry became
9944           invalid but was referenced later in the command.  Affected file
9945           silcd/command.c.
9946
9947 Thu Mar 15 12:46:58 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9948
9949         * Fixed fatal bug in failure packet handling.  Server ignored
9950           the failure and thus crashed when it came.
9951
9952         * Updated TODO.
9953
9954 Wed Mar 14 20:37:35 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9955
9956         * Added new SILC_CF_LAG_STRICT command flag that strictly forces
9957           that the command may be executed only once in (about) 2 seconds.
9958           The old SILC_CF_LAG flag is same but allows command bursts up
9959           to five before limiting.
9960
9961           Added the support for CF_LAG and CF_LAG_STRICT flags to the
9962           server code.  Various commands now includes the CF_LAG_STRICT
9963           flag to disallow any kind of miss-use of the command.
9964
9965         * Fixed the silc_buffer_unformat to not to allocate any data
9966           if the length of the data is zero.  It used to allocate the
9967           length + 1.  Affected file lib/silcutil/silcbuffmt.c.
9968
9969 Wed Mar 14 16:10:30 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9970
9971         * Changed the format of AdminConnection configuration section
9972           in the server.  Added username of the admin to the format.
9973           Affected files silcd/serverconfig.[ch].
9974
9975           Added silc_server_config_find_admin into silcd/serverconfig.[ch]
9976           to return admin configuration data by host, username and/or
9977           nickname.
9978
9979 Wed Mar 14 13:18:16 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9980
9981         * Implemented WHOWAS command to the server.  Added the functions:
9982
9983           silc_server_command_whowas_parse,
9984           silc_server_command_whowas_send_reply,
9985           silc_server_command_whowas_from_client and
9986           silc_server_command_whowas_from_server
9987
9988         * Added <Client ID> argument to the WHOWAS command reply.  Updated
9989           the protocol specs accordingly.
9990
9991         * Implemented WHOWAS command and command_reply to the client
9992           library.
9993
9994           Implemented the WHOWAS printing on the user interface.
9995
9996 Tue Mar 13 22:17:34 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9997
9998         * Added new argument to the WHOWAS command reply, the real name.
9999           It is an optional argument.  Updated the protocol specs.
10000
10001         * Added SilcIDCacheDestructor callback that is registered when
10002           the SilcIDCache is allocated.  The callback is called when
10003           an cache entry in the ID Cache expires, or is purged from the
10004           cache.  Added into lib/silccore/idcache.[ch].
10005
10006           Added silc_idlist_client_destructor to the silcd/idlist.[ch]
10007           to destruct the client entries when the cache entry expires.
10008           Other ID Cache's in server and in the client library ignores
10009           the destructor.
10010
10011         * If the ID Cache entry's `expire' field is zero then the entry
10012           never expires.  Added boolean `expire' argument to the
10013           silc_idcache_add function in the lib/silccore/idcache.[ch].
10014           If it is TRUE the default expiry value is used.
10015
10016         * Added silc_server_free_client_data_timeout that is registered
10017           when client disconnects.  By default for 5 minutes we preserve
10018           the client entry for history - for WHOWAS command.
10019
10020 Tue Mar 13 13:26:18 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10021
10022         * Added support to the server to enforce that commands are not
10023           executed more than once in 2 seconds.  If server receives
10024           commands from client more frequently, timeout is registered
10025           to process the commands.  Affected file silcd/command.c.
10026           Added new function silc_server_command_process_timeout.
10027
10028         * Changed NICK_NOTIFY handling in client library to check that
10029           if the client's nickname was changed, so there is no need to
10030           resolve anything from the server.
10031
10032         * Removed error printing from the WHOIS and IDENTIFY commands.
10033           If error occurs then it is ignored silently in the client library.
10034           The application, however, may map the received error to
10035           human readable error string.  The application currently maps
10036           the NO_SUCH_NICKNAME error to string.
10037
10038         * Made the command status message public to the application.  Moved
10039           them from lib/silcclient/command_reply.c to
10040           lib/silcclient/command_reply.h.  The application can map the
10041           received command status to the string with the
10042           silc_client_command_status_message function.
10043
10044         * Added check to the server to check that client's ID is same
10045           as the Source ID in the packet the client sent.  They must
10046           match.
10047
10048 Tue Mar 13 12:49:21 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10049
10050         * Added dist-bzip hook to the Makefile.am to make bzip2
10051           compressed distributions.
10052
10053 Mon Mar 12 18:43:38 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10054
10055         * Server now enforces the maximum length for the nickname and
10056           the channel as protocol specification dictates.  128 bytes for
10057           nickname and 256 bytes for channel name.
10058
10059         * Moved the WHOIS printing to the application.  The client libary
10060           does not print out the WHOIS information anymore, the application
10061           must do it.  Renamed silc_client_command_reply_whois_print to
10062           the silc_client_command_reply_whois_save.
10063
10064           The client's idle time is also sent to the application now, and
10065           the idle is shown on screen.
10066
10067         * Added silc_client_command_reply_identify_save to save the
10068           received IDENTIFY entries.
10069
10070         * Do not check for channel private keys in message sending and
10071           reception if the channel does not have the PRIVKEY mode set.
10072           Affected file lib/silclient/client_channel.c.
10073
10074 Sun Mar 11 20:25:06 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10075
10076         * Fixed a minor bug if WHOIS and IDENTIFY command parsing that
10077           just surfaced after chaning the JOIN procedure.
10078
10079 Sun Mar 11 14:59:05 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10080
10081         * Added silc_client_get_clients_by_list to get client entries
10082           from Client ID list, that is returned for example by JOIN
10083           and USERS command replies.  The application should use this
10084           function for example when JOIN command reply is received to
10085           resolve the clients already on the channel (library does not
10086           do that anymore as USERS command reply is not used in the JOIN
10087           procedure anymore).  Affected files lib/silcclient/silcapi.h and
10088           lib/silcclient/idlist.c.
10089
10090         * JOIN command reply and USERS command reply returns now SilcBuffer
10091           pointers instead of unsigned char pointers when returning
10092           the client list and mode list.
10093
10094         * Added <Client ID> argument to the JOIN command reply, mainly
10095           for the server to identify for which client the command was
10096           originally sent.  Updated protocol specs accordingly.
10097
10098         * Added SilcDlist private_key pointer to the SilcChannelEntry
10099           in the client to support the channel private keys.  Affected
10100           file is lib/silcclient/idlist.h.
10101
10102         * Added SilcChannelPrivateKey argument to the function
10103           silc_client_send_channel_message so that application can choose
10104           to use specific private ke if it wants to.  If it is not provided,
10105           the normal channel key is used, unless private keys are set.
10106           In this case the first (key that was added first) is used
10107           as the encryption key.
10108
10109         * Implemented the support for channel private key handling.
10110           Implemented the following functions:
10111
10112           silc_client_add_channel_private_key,
10113           silc_client_del_channel_private_keys,
10114           silc_client_del_channel_private_key,
10115           silc_client_list_channel_private_keys and
10116           silc_client_free_channel_private_keys
10117
10118           Affected file lib/silcclient/client_channel.c.
10119
10120         * Added the support for the private keys in the channel message
10121           sending and encryption and in the message reception and
10122           decryption.  Affected funtions are
10123           silc_client_send_channel_message and silc_client_channel_message.
10124
10125 Sat Mar 10 21:36:22 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10126
10127         * Added SKE's key verify callback to the client library's
10128           KE protocol context. Affected files lib/silcclient/protocol.[ch].
10129
10130         * Removed the statement that server (or router) must send USERS
10131           command reply when joining to the channel so that the client
10132           knows who are on the channel.  Instead, the client list and
10133           client's mode list is now sent in the JOIN command reply to the
10134           client who joined channel.  This is better solution.
10135
10136         * Added function silc_server_get_users_on_channel and function
10137           silc_server_save_users_on_channel to the silcd/server.[ch].
10138
10139         * Removed function silc_server_command_send_users from the
10140           silcd/command.c.
10141
10142         * Do not show topic on the client library anymore.  The topic is
10143           sent in the command reply notify to the application and the
10144           application must show the topic now.
10145
10146 Sat Mar 10 00:07:37 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10147
10148         * Added client searching by nickname hash into the IDENTIFY and
10149           WHOIS commands in the server as they were clearly missing from
10150           them.  Affected file is silcd/command.c.
10151
10152         * Fixed a bug in private message receiving in the client library.
10153           The remote ID was freed and it wasn't supposed, now it is
10154           duplicated.
10155
10156 Fri Mar  9 12:40:42 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10157
10158         * Minor fix to the channel payload; allocate the data area, as it
10159           needs to be of specific length.
10160
10161         * If the key agreement port is zero then the operating
10162           system will define the bound port.  Affected files are
10163           lib/silcclient/silcapi.h and lib/silcclient/client_keyagr.c.
10164
10165         * Added new function silc_channel_payload_decrypt into the file
10166           lib/silccore/silcchannel.[ch].
10167
10168         * Moved the channel message etc, check from silc_packet_decrypt
10169           to applications.  The library calls now a generic
10170           SilcPacketCheckDecrypt callback which is to return TRUE or FALSE
10171           when the packet is either normal or special.  This was done to
10172           allow more wide range of checking that was not allowed when
10173           the code was in library.  Now applications can do virtually any
10174           checks to the packet and return to the library the decision how
10175           the packet should be processed.  Affected files are
10176           lib/silccore/silcpacket.[ch].
10177
10178           Added silc_server_packet_decrypt_check to the server and
10179           silc_client_packet_decrypt_check to the client library.
10180
10181         * Added silc_server_packet_send_srcdest into silcd/packet_send.[ch]
10182           to send with specified source and destination information.
10183
10184         * Channel message delivery between routers was broken after the
10185           channel key distribution was fixed earlier.  The channel key
10186           was used be to distributed to other routers as well which is not
10187           allowed by the protocol.  Now this is fixed and channel keys
10188           really are cell specific and the channel message delivery between
10189           routers comply with the protocol specification.
10190
10191         * Fixed various commands in server to check also the global list
10192           for the channel entry and not just the local list.  The affected
10193           file silcd/command.c.
10194
10195 Thu Mar  8 21:39:03 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10196
10197         * Added assert()s to buffer formatting and unformatting routines
10198           to assert (if --enable-debug) when error occurs.  Affected
10199           file: lib/silcutil/silcbuffmt.c.
10200
10201         * Changed to auto-reconnect to check whether the remote host is
10202           router and register the re-connect timeout if it is.  It used
10203           to check that whether we are normal server, but router must do
10204           auto-reconnect with another router as well.  Affected file
10205           silcd/server.c.
10206
10207         * Removed the [<key len>] option from CMODE command as the cipher
10208           name decides the key length, nowadays.  See the defined ciphers
10209           from the protocol specification.
10210
10211         * Added [<hmac>] option to the CMODE command to define the HMAC
10212           for the channel.  Added SILC_CMODE_HMAC channel mode.
10213
10214         * Added [<hmac>] option for the JOIN command so that user can
10215           select which HMAC is used to compute the MACs of the channel
10216           messages.
10217
10218         * Added Hmac field to the Channel Message Payload.  The integrity
10219           of plaintext channel messages are now protected by computing
10220           MAC of the message and attaching the MAC to the payload.  The
10221           MAC is encrypted.  Now, it is clear that this causes some
10222           overhead to the size of the packet but rationale for this is that
10223           now the receiver can verify whether the channel message decrypted
10224           correctly and also when private keys are set for the channel the
10225           receiver can decrypt the packet with several keys and check from
10226           the MAC which key decrypted the message correctly.
10227
10228         * Added silc_cipher_encrypt and silc_cipher_decrypt into the
10229           lib/silccrypt/silccipher.[ch].
10230
10231         * Added silc_hash_len to return the digest length into the
10232           lib/silcrypt/silchash.[ch].
10233
10234         * Rewrote parts of Silc Channel Payload interface in the
10235           lib/silccore/silcchannel.[ch].  The encode function now also
10236           encrypts the packet and parse function decrypts it.
10237
10238 Wed Mar  7 20:58:50 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10239
10240         * Fixed a minor formatting bug in the SKE's key material processing.
10241           It actually might have processed the keys wrong way resulting
10242           into wrong keys.
10243
10244         * Redefined the mandatory HMAC algorithms and added new algorithms.
10245           Added hmac-sha1-96 and hmac-md5-96 which are normal hmac-sha1
10246           and hmac-md5 truncated to 96 bits.  The mandatory is now
10247           hmac-sha1-96.  Rest are optional (including the one that used
10248           to be mandatory).  Rationale for this is that the truncated HMAC
10249           length is sufficient from security point of view and can actually
10250           make the attack against the HMAC harder.  Also, the truncated
10251           HMAC causes less overhead to the packets.  See the RFC2104 for
10252           more information.
10253
10254         * Added new [hmac] configuration section.  The SKE used to use
10255           the hash names (md5 and sha1) in the SKE proposal as HMCAS which
10256           is of course wrong.  The official names that must be proposed in
10257           the SKE are the ones defined in the protocol specification
10258           (hmac-sha1-96 for example).  The user can configure any hmac
10259           using any hash function configured in the [hash] section.  At
10260           least, the mandatory must be configured.
10261
10262           Rewrote the HMAC interface in lib/silccrypt/silchmac.[ch].
10263
10264         * Added HMAC list to the SKE proposal list.  It has now both
10265           hash algorithm list and HMAC list.  This makes the protocol
10266           incompatible with previous versions.  The SKE now seems to work
10267           the way it is supposed to work, for the first time actually.
10268
10269         * Defined plain Hash algorithms to the protocol specification.
10270           Added sha1 and md5.
10271
10272 Tue Mar  6 15:36:11 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10273
10274         * Implemented support for key agreement packets into the server.
10275           Added functions silc_server_key_agreement and
10276           silc_server_send_key_agreement.  Other than these functions,
10277           server has nothing to do with this packet.
10278
10279         * Added support for private message key packets into the server.
10280           Added functions silc_server_private_message_key and
10281           silc_server_send_private_message_key.
10282
10283         * Updated TODO.
10284
10285         * Changed the silc_[client|server]_protocol_ke_set_keys to be
10286           called in the protocol's final callback instead in the END
10287           protocol state.  This makes a little more sense and in the same
10288           time in client we can use the same protocol routines for normal
10289           key exchange and to key agreement packet handling as well.
10290
10291         * Added to both client's and server's KE protocol context the
10292           SilcSKEKeyMaterial pointer to save the key material.  We will
10293           bring the key material to the protocol's final callback by doing
10294           this.  The final callback must free the key material.
10295
10296         * Added SKE's packet_send callback into client's KE protocol
10297           context so that the caller can choose what packet sending function
10298           is used.  This way we can use different packet sending when
10299           doing normal SKE when doing key agreement packet handling (in
10300           the key agreement packet handling we do not want to encrypt
10301           the packets).
10302
10303         * Implemented the responder side of the key agreement routines
10304           in the client.  The client can now bind to specified port and
10305           accept incoming key negotiation.  The key material is passed
10306           to the application after the protocol is over.
10307
10308         * Implemented the processing of incoming Key Agreement packet
10309           in the client.  Added function silc_client_key_agreement to
10310           process the packet.
10311
10312         * Implemented the intiator side of the key agreement routines
10313           in the client.  The client can now initiate key agreement with
10314           another remote client.  The key material is passed to the
10315           application after the protocol is over.
10316
10317         * Created client_keyagr.c to include all the key agreement
10318           routines.
10319
10320         * Added macro SILC_TASK_CALLBACK_GLOBAL which is equal to the
10321           SILC_TASK_CALLBACK except that it is not static.
10322
10323         * Created client_notify.c and moved the Notify packet handling
10324           from the client.[ch] into that file.
10325
10326         * Created client_prvmsg.c and moved all private message and
10327           private message key routines from the client.[ch] into that file.
10328
10329         * Create client_channel.c and moved all channel message and
10330           channel private key routines from the client.[ch] into that file.
10331
10332         * Changed silc_client_get_client_by_id_resolve to resolve with
10333           WHOIS command instead of IDENTIFY command, in the file
10334           lib/silclient/idlist.c.
10335
10336 Mon Mar  5 18:39:49 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10337
10338         * Implemented the SKE's responder side to the Client library.
10339
10340         * When FAILURE is received to the protocol do not trust it
10341           blindly.  Register a timeout to wait whether the remote closes
10342           the connection as it should do it, only after that process the
10343           actual failure.  This was changed to both client and server.
10344
10345         * Added client_internal.h to include some of the structures
10346           there instead of client.h in lib/silcclient/.
10347
10348         * Added function silc_task_unregister_by_callback to unregister
10349           timeouts by the callback function.
10350
10351 Sat Mar  3 19:15:43 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10352
10353         * Some "Incomplete WHOIS info" errors has been appearing on the
10354           log files.  Took away the entry->userinfo check from WHOIS
10355           reply sending.  The entry->userinfo is now " " if client did not
10356           provide one.  I thought this was fixed earlier but something
10357           is wrong still.  Let's see if the error still appears.
10358
10359 Wed Feb 28 20:56:29 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10360
10361         * Fixed a minor bug in the login when the channel key is
10362           re-generated in the server.  It used to generate the key in
10363           wrong order and thus caused problems in the channel traffic.
10364
10365         * Fixed a minor bug in channel key distsribution after
10366           KICK command.  The key was not sent to the router even though
10367           it should've been.
10368
10369 Tue Feb 27 20:24:25 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10370
10371         * Added silc_ske_process_key_material_data as generic routine
10372           to process any key material as the SILC protocol dictates.  The
10373           function is used by the actual SKE library but can be used by
10374           applications as well.  This relates to the private message keys
10375           and the channel private keys since they must be processed the
10376           same way the normal SILC session keys.  The protocol dictates
10377           this.  Affected files: lib/silcske/silcske.[ch].
10378
10379           Added also silc_ske_free_key_material to free the
10380           SilcSKEKeyMaterial structure.
10381
10382         * Defined silc_cipher_set_key function to set the key for
10383           cipher without using the object's method function.  The affected
10384           files: lib/silccrypt/silccipher.[ch].
10385
10386         * Implemented silc silc_client_add_private_message_key,
10387           silc_client_add_private_message_key_ske,
10388           silc_client_del_private_message_key,
10389           silc_client_list_private_message_keys and
10390           silc_client_free_private_message_keys functions in the
10391           client library.
10392
10393           Added functions silc_client_send_private_message_key to send
10394           the Private Message Key payload and silc_client_private_message_key
10395           to handle incoming Private Message Key payload.
10396
10397         * Added Cipher field to the Private Message Key payload to set
10398           the cipher to be used.  If ignored, the default cipher defined
10399           in the SILC protocol (aes-256-cbc) is used.
10400
10401 Tue Feb 27 13:30:52 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10402
10403         * Removed lib/silcclient/ops.h file.
10404
10405           Redefined parts of the SILC Client Library API. Created new
10406           file silcapi.h that deprecates the ops.h file and defines the
10407           published Client Library API.  Defined also private message key
10408           API and channel private key API into the file.
10409
10410           This is the file that the application must include from the
10411           SILC Client Library.  Other files need not be included by
10412           the application anymore.
10413
10414         * Added new key_agreement client operation callback and also
10415           defined the Key Agreement library API for the application.
10416
10417 Tue Feb 27 11:28:31 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10418
10419         * Added new packet type: SILC_PACKET_KEY_AGREEMENT.  This packet
10420           is used by clients to request key negotiation  between another
10421           client in the SILC network.  If the negotiation is started it
10422           is performed using the SKE protocol.  The result of the
10423           negotiation, the secret key material, can be used for example
10424           as private message key.
10425
10426           Implemented the Key Agreement payload into the files
10427           lib/silccore/silauth.[ch].
10428
10429 Mon Feb 26 12:13:58 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10430
10431         * Redefined ciphers for the SILC protocol.  Added some new ciphers
10432           and defined the key lengths for the algorithms.  Changed the
10433           code accordingly.  The default key length is now 256 bits.
10434
10435         * Fixed SKE key distribution function silc_ske_process_key_material
10436           when the key length is more than 128 bits.  The default key
10437           length in SILC is now 256 bits.
10438
10439         * Added new command status type: SILC_STATUS_ERR_UNKOWN_ALGORITHM
10440           to indicate unsupported algorithm.
10441
10442         * Renamed rijndael.c to aes.c and all functions as well.
10443
10444         * Fixed a long standing channel key setting bug in client library.
10445           Weird that it has never surfaced before.
10446
10447         * Fixed bug in channel deletion.  If the entire channel is removed
10448           then it must also delete the references of the channel entry
10449           from the client's channel list as the client's channel entry and
10450           the channel's client entry share same memory.
10451
10452 Sun Feb 25 20:47:29 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10453
10454         * Implemented CONNECT and SHUTDOWN commands in the client.
10455
10456         * Implemented CLOSE command to the client.
10457
10458         * Added the function silc_idlist_find_server_by_name into the
10459           files silcd/idlist.[ch].
10460
10461           Added the function silc_idlist_find_server_by_conn into the
10462           files silcd/idlist.[ch].
10463
10464 Sat Feb 24 23:45:49 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10465
10466         * DIE command was renamed to SHUTDOWN.  Updated the both code
10467           and protocol specs.
10468
10469         * Defined SILC_UMODE_NONE, SILC_UMODE_SERVER_OPERATOR and
10470           SILC_UMODE_ROUTER_OPERATOR modes into lib/silccore/silcmode.h.
10471
10472         * Implemented CONNECT, CLOSE and SHUTDOWN commands to the server
10473           side.
10474
10475         * Added function silc_server_create_connection function to create
10476           connection to remote router.  My server implementation actually
10477           does not allow router to connect to normal server (it expects
10478           that normal server always initiates the connection to the router)
10479           so the CONNECT command is only good for connecting to another
10480           router.
10481
10482 Sat Feb 24 16:03:45 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10483
10484         * Added SILC_NOTIFY_TYPE_KICKED to indicate that the client
10485           or some other client was kicked from the channel.
10486
10487           Implemented the handling of the notify type to both client
10488           and server.
10489
10490           Implemented silc_server_send_notify_kicked to send the KICKED
10491           notify.  It is used to send it to the server's primary router.
10492
10493         * Implemented the KICK command into server and client.
10494
10495         * Added `query' argument to the silc_idlist_get_client function
10496           to indicate whether to query the client from server or not if
10497           it was not found.
10498
10499         * Added new command status type SILC_STATUS_ERR_NO_CHANNEL_FOPRIV
10500           to indicate that the client is not channel founder.
10501
10502         * Updated TODO.
10503
10504 Sat Feb 24 00:00:55 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10505
10506         * Removed the rng context from SilcPacketContext structure and
10507           changed that the packet routine uses the Global RNG API.
10508
10509 Fri Feb 23 11:22:57 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10510
10511         * Added support for quit message that client can "leave" on the
10512           channel when it quits the SILC.  It is ditributed inside the
10513           SILC_NOTIFY_TYPE_SIGNOFF notify type.
10514
10515           Added silc_server_free_client_data that will take the
10516           signoff message as argument.
10517
10518         * Changed SKE routines to use the silc_pkcs_sign/verify routines.
10519
10520 Thu Feb 22 23:05:36 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10521
10522         * Updated parts of the protocol specification to keep it up
10523           to date.
10524
10525 Thu Feb 22 15:08:20 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10526
10527         * Added List flag (SILC_PACKET_FLAG_LIST) to indicate list of
10528           payloads in one packet.
10529
10530         * Deprecated following packet types: NEW_ID_LIST, NEW_CHANNEL_LIST,
10531           NEW_CHANNEL_USER_LIST, SET_MODE and SET_MODE_LIST.  List packets
10532           use now the new List flag.
10533
10534         * Also deprecated the following packet types: REPLACE_ID,
10535           NEW_CHANNEL_USER and REMOVE_CHANNEL_USER packet types.
10536
10537         * Added list support for Notify packet in server.
10538
10539         * Added silc_server_send_notify_channel_change to send the
10540           CHANNEL_CHANGE notify type to replace channel ID's.  Deprecates
10541           the silc_server_send_replace_id.
10542
10543         * Added silc_server_send_notify_nick_change to send the
10544           NICK_CHANGE notify type.  Deprecates the function
10545           silc_server_send_replace_id.
10546
10547         * Added silc_server_send_notify_join to send the JOIN notify type.
10548           Deprecates the function silc_server_send_new_channel_user.
10549
10550         * Added silc_server_send_notify_leave to send LEAVE notify type.
10551           Deprecates the function silc_server_send_remove_channel_user.
10552
10553         * Added silc_server_send_notify_cmode and
10554           silc_server_send_notify_cumode to send CMODE and CUMODE notify
10555           types.  Deprecates the silc_server_send_set_mode function.
10556
10557         * Added SERVER_SIGNOFF notify type to indicate that server has
10558           quit.  This means that all clients on the channel from that
10559           server will drop.  This can be also used when netsplit happens.
10560
10561           Deprecated REMOVE_ID packet type since it is not needed anymore
10562           even from server.
10563
10564           Added silc_server_send_notify_server_signoff to send the
10565           SERVER_SIGNOFF notify type.  Deprecates the function
10566           silc_server_send_remove_id.
10567
10568           Added also silc_server_send_notify_signoff to send the
10569           SIGNOFF notify type.
10570
10571         * Employed the PKCS #1. It is the mandatory way to do RSA in the
10572           SILC protocol from this day on.  Changed the protocol
10573           specification as well.
10574
10575         * Added silc_server_send_notify_topic_set to send TOPIC_SET
10576           notify type.  It is used between routers to notify about
10577           topic changes on a channel.
10578
10579         * Added silc_id_dup into lib/silccore/id.[ch] to duplicate
10580           ID data.
10581
10582         * Partly updated the protocol specification to comply with the
10583           changes now made.  It is still though a bit outdated.
10584
10585         * The JOIN notify type now takes one extra argument <Channel ID>.
10586           The packet used to be destined to the channel but now the
10587           JOIN type may be sent as list thus it is impossible to
10588           destine it to any specific channel.  By adding this argument
10589           it is again possible.
10590
10591 Wed Feb 21 22:39:30 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10592
10593         * Added CREDITS file.  The CHANGES and CREDITS file will appear
10594           in the distribution as well.
10595
10596 Wed Feb 21 14:17:04 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10597
10598         * Implemented CMODE_CHANGE, CUMODE_CHANGE and TOPIC_SET notify
10599           types in the server's silcd/packet_receive.c.
10600
10601         * Implemented CMODE and CUMODE to work in router environment.
10602
10603         * Fixed minor encoding and decoding buglet from the
10604           lib/silccore/silcmode.c.
10605
10606         * Fixed buffer overflow from lib/silcclient/command.c in USERS
10607           command parsing.
10608
10609 Wed Feb 21 12:44:00 EET 2001  Mika Boström <bostik@lut.fi>
10610
10611         * Changed all SilcConfigServer* and silc_config_server* to
10612           SilcServerConfig* and silc_server_config*, respectively.
10613           Patch by Bostik.
10614
10615 Wed Feb 21 00:10:00 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10616
10617         * Associated the ID (client or server ID) to the Authentication
10618           Payload to avoid any possibility of forging.  Updated the
10619           protocol specification and the code accordingly.
10620
10621 Tue Feb 20 14:14:14 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10622
10623         * The RSA key length is now save to the RsaKey context in the
10624           key generation process in lib/silccrypt/rsa.c.  The key length
10625           is now used to figure out the maximum size of the block allowed
10626           to be encrypted/signed.
10627
10628         * Added silc_mp_mp2bin_noalloc into lib/silcmath/mpbin.[ch].  It
10629           is equivalent to the silc_mp_mp2bin but does not allocate any
10630           memory.
10631
10632         * Changed silc_mp_mp2bin API to take length argument.  If it is
10633           non-zero then the buffer is allocated that large.  If zero, then
10634           the size is approximated using silc_mp_sizeinbase, which however
10635           is not relieable.
10636
10637         * Created Global RNG API which is global RNG that application can
10638           initialize.  After initializing, any routine anywhere in the
10639           code (including library) can use RNG without allocating a new
10640           RNG object.  This was done to allow this sort of use of the
10641           RNG in code that has no chance to allocate RNG object.  All
10642           applications currently allocate this and many routines in the
10643           library use this.  Affected file lib/silccrypt/silcrng.[ch].
10644
10645         * Removed the RNG kludge from lib/silcmath/primegen.c and changed
10646           it to use the Global RNG API.
10647
10648         * Defined Authentication Payload into protocol specification that
10649           is used during SILC session to authenticate entities.  It is
10650           used for example by client to authenticate itself to the server
10651           to obtain server operator privileges.
10652
10653           Implemented this payload into the lib/silccore/silcauth.[ch].
10654           Implemented also routines for public key based authentication
10655           as the new protocol specification dictates.
10656
10657           Moved definitions of different authentication methods from
10658           lib/silccore/silcprotocol.h into lib/silccore/silcauth.h.
10659
10660         * Added silc_pkcs_encrypt, silc_pkcs_decrypt, silc_pkcs_sign,
10661           silc_pkcs_verify and silc_pkcs_sign_with_hash and
10662           silc_pkcs_verify_with_hash functions into the file
10663           lib/silccrypt/silcpkcs.[ch].
10664
10665 Mon Feb 19 19:59:28 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10666
10667         * The client entry's userinfo pointer must be always valid.
10668           Otherwise the [<unknown>] bug will surface beacuse the WHOIS
10669           will fail since it requires the userinfo.  Now, the userinfo
10670           is allocated as "" if actual userinfo does not exist.  Actually,
10671           it must exist and it is totally Ok to drop client connections
10672           that does not announce the userinfo.  However, we will make
10673           this workaround for now.
10674
10675         * Added silc_net_get_remote_port into lib/silcutil/silcnet.[ch]
10676           to return the remote port by socket.
10677
10678 Mon Feb 19 14:26:49 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10679
10680         * Changed SILC_SERVER_COMMAND_EXEC_PENDING macro to the name
10681           SILC_SERVER_PENDING_EXEC and added an new macro
10682           SILC_SERVER_PENDING_DESTRUCTOR which is called to free the
10683           data or when error occurs while processing the pending command.
10684
10685           Added new argument `destructor' into silc_server_command_pending
10686           and to the SilcServerCommandPending object.  This destructor is
10687           now called after calling the pending callback or if error occurs
10688           immediately.  If error occurs the actual pending callback won't
10689           be called at all - only the destructor.  The destructor may be
10690           NULL if destructor is not needed.
10691
10692           All this applies for client library code as well.  Similar
10693           changes were made there as well for the pending commands.
10694
10695           In the client, the application must now allocate the
10696           SilcClientCommandContext with the silc_client_command_alloc
10697           function.
10698
10699         * Added reference counter to the SilcServerCommandContext.  Added
10700           function silc_server_command_alloc and silc_server_command_dup
10701           functions.
10702
10703           Same type of functions added to the client library for the same
10704           purpose as well.
10705
10706         * Removed the cmd_ident from IDListData away since it is now
10707           global for all connections.  It is the command identifier used
10708           in command sending and with pending commands.  The affected file
10709           is silcd/idlist.h.
10710
10711         * Added reference counter to the SilcSocketConnection objecet to
10712           indicate the usage count of the object.  The object won't be
10713           freed untill the reference counter hits zero.  Currently only
10714           server uses this, and client ignores it.  The client must be
10715           set to use this too later.  The affected files are
10716           lib/silccore/silcsockconn.[ch].  Added also the function
10717           silc_socket_dup to increase the reference counter.
10718
10719           This was mainly added because it is possible that the socket
10720           is removed underneath of pending command or other async
10721           operation.  Now it won't be free'd and proper DISCONNECTING
10722           flags, etc. can be set to avoid sending data to connection that
10723           is not valid anymore.
10724
10725         * Added SILC_SET_DISCONNECTING to server.c when EOF is read from
10726           the connection.  After that it sets SILC_SET_DISCONNECTED.
10727           It is, however, possible that the socket data is not still freed.
10728           The silc_server_packet_process now checks that data is not
10729           read or written to connection that is DISCONNECTED.  The socket
10730           get's freed when the reference counter hits zero.
10731
10732 Mon Feb 19 00:50:57 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10733
10734         * Changed the client operation API: channel_message operation's
10735           `sender' is now the client entry of the sender, not the nickname
10736           and the `channel' is the channel entry, not the channel name.
10737
10738           In the private_message operation the `sender' is now also the
10739           client entry of the sender not the nickname.
10740
10741           Affected file is lib/silcclient/ops.h and all applications
10742           using the client operations.
10743
10744 Sat Feb 17 22:11:50 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10745
10746         * Moved the calling of ops->connect() from connect_to_server_final
10747           into receive_new_id functin since that is the point when the
10748           client is actually allowed to send traffic to network.  The
10749           affected file is lib/silcclient/client.c.
10750
10751 Sat Feb 17 13:15:35 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10752
10753         * When receiving NEW_CHANNEL_LIST, NEW_CHANNEL_USER_LIST,
10754           NEW_ID_LIST and SET_MODE_LIST packets, broadcast the list packet
10755           (if needs broadcasting) instead of broadcasting the packets one
10756           by one which would make a burst in the network traffic.
10757
10758         * Added `broadcast' argument to the functions in silcd/server.[ch]
10759           silc_server_create_new_channel[_with_id] to indicate whether
10760           to send New Channel packet to primary router.
10761
10762 Sat Feb 17 01:06:44 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10763
10764         * Added new function into the silcd/server.[ch] files:
10765           silc_server_create_new_channel_with_id to create new channel with
10766           already existing Channel ID.
10767
10768         * Added new packet type SILC_PACKET_SET_MODE_LIST into the file
10769           lib/silccore/silcpacket.h.  This packet is used t send list of
10770           Set Mode payloads inside one packet.  Server uses this to set
10771           the modes for the channels and clients on those channels, that it
10772           announced to the router when it connected to it.  The protocol
10773           specification has been updated accordingly.
10774
10775         * The silc_server_new_channel did not handle the packet coming
10776           from normal server as it normally does not send that.  However,
10777           when it announces its channels it does send it.  Implemented
10778           the support for that.
10779
10780         * Added SILC_ID_CHANNEL_COMPARE macro to compare to Channel ID's
10781           into the file lib/silccore/id.h.
10782
10783 Fri Feb 16 23:57:29 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10784
10785         * Fixed memory leaks in the functions silc_idlist_del_client,
10786           silc_idlist_del_channel and silc_idlist_del_server in the file
10787           silcd/idlist.c.  All of those leaked like a sieve.
10788
10789         * Fixed some small memory leaks in the client's function
10790           silc_client_notify_by_server.
10791
10792         * Added functions into silcd/server.c: silc_server_announce_clients,
10793           silc_server_announce_channels and silc_server_announce_server.
10794           These functions are used by normal and router server to announce
10795           to its primary router about clients, channels and servers (when
10796           router) that we own.  This is done after we've connected to the
10797           router.
10798
10799           These functions effectively implements the following packet types:
10800           SILC_PACKET_NEW_CHANNEL_LIST, SILC_PACKET_NEW_CHANNEL_USER_LIST
10801           and SILC_PACKET_NEW_ID_LIST.
10802
10803         * Added new functions into the silcd/packet_receive.[ch]:
10804           silc_server_new_id_list, silc_server_new_channel_list and
10805           silc_server_new_channel_user_list to handle the incoming
10806           NEW_ID_LIST, NEW_CHANNEL_LIST and NEW_CHANNEL_USER_LIST packets.
10807
10808         * Added support of changing Channel ID in the function
10809           silc_server_replace_id.  If the server that announces a channel
10810           to the router already exists in the router (with same name but
10811           with different Channel ID), router is responsible to send
10812           Replace ID packet to the server and force the server to change
10813           the Channel ID to the one router has.
10814
10815         * Added new notify type SILC_NOTIFY_TYPE_CHANNEL_CHANGE to notify
10816           client that the Channel ID has been changed by the router.  The
10817           normal server sends this to the client.  Client must start using
10818           the new Channel ID as the channel's ID.
10819
10820           Implemented handling of this new type into lib/silcclient/client.c
10821           into the function silc_client_notify_by_server.
10822
10823         * Added new function silc_idlist_replace_channel_id into the files
10824           silcd/idlist.[ch] to replace the Channel ID.
10825
10826 Fri Feb 16 14:14:00 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10827
10828         * Call silc_server_command_identify_check always when processing
10829           the IDENTIFY command in silcd/command.c
10830
10831 Thu Feb 15 20:07:37 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10832
10833         * Added new packet type SILC_PACKET_HEARTBEAT that is used to
10834           send keepalive packets.  The packet can be sent by clients,
10835           servers and routers.
10836
10837           Added function silc_socket_set_heartbeat into the file
10838           lib/silccore/silcsockconn.[ch] to set the heartbeat timeout.
10839           If not set, the heartbeat is not performed.  The actual
10840           heartbeat is implemented in the low level socket connection
10841           library.  However, application is responsible of actually
10842           sending the packet.
10843
10844           Added silc_server_send_heartbeat to send the actual heartbeat
10845           packet into silcd/packet_send.[ch].  Server now performs
10846           keepalive with all connections.
10847
10848         * Added silc_task_get_first function into lib/silcutil/silctask.c
10849           to return the timeout task with shortest timeout.  There was a bug
10850           in task unregistration that caused problems.  TODO has been
10851           updated to include that task system must be rewritten.
10852
10853         * The client library will now resolve the client information when
10854           receiving JOIN notify from server for client that we know but
10855           have incomplete information.
10856
10857         * Rewrote parts of silc_server_remove_from_channels and
10858           silc_server_remove_from_one_channel as they did not remove the
10859           channel in some circumstances even though they should've.
10860
10861         * Encryption problem encountered in server:
10862
10863           The LEAVE command used to send the Channel Key packet to the
10864           router immediately after generating it.  However, the code
10865           had earlier sent Remove Channel user packet but not immediately,
10866           ie. it was put to queue.  The order of packets in the router
10867           was that Channel Key packet was first and Remove Channel User
10868           packet was second, even though they were encrypted in the
10869           reverse order.  For this reason, MAC check failed.  Now, this
10870           is fixed by not sending the Channel Key packet immediately but
10871           putting it to queue.  However, this is more fundamental problem:
10872           packets that are in queue should actually not be encrypted
10873           because packets that are sent immediately gets encrypted
10874           actually with wrong IV (and thus MAC check fails).  So, packets
10875           that are in queue should be encrypted when they are sent to
10876           the wire and not when they put to the queue.
10877
10878           However, the problem is that the current system has not been
10879           designed to work that way.  Instead, the packet is encrypted
10880           as soon as possible and left to the queue.  The queue is then
10881           just purged into wire.  There won't be any fixes for this
10882           any time soon.  So, the current semantic for packet sending
10883           is as follows:
10884
10885           o If you send packet to remote host and do not force the send
10886           (the packet will be in queue) then all subsequent packets to the
10887           same remote host must also be put to the queue.  Only after the
10888           queue has been purged is it safe again to force the packet
10889           send immediately.
10890
10891           o If you send all packets immediately then it safe to send
10892           any of subsequent packets through the queue, however, after
10893           the first packet is put to queue then any subsequent packets
10894           must also be put to the queue.
10895
10896           Follow these rules and everything works fine.
10897
10898 Thu Feb 15 14:24:32 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10899
10900         * Added new function silc_server_remove_clients_by_server to
10901           remove all client entries from ID list when the server connection
10902           is lost.  In this case it is also important to invalidate all
10903           client entires as they hold the invalid server entry.  This
10904           fixes fatal bug when server has lost connection and will reconnect
10905           again.
10906
10907 Wed Feb 14 16:03:25 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10908
10909         * Made some sanity checks to silc_server_daemonise like to check
10910           whether the requested user and group actually exists.
10911
10912         * Added sanity check to SKE's silc_ske_responder_finish to check
10913           that the public and private key actually is valid.
10914
10915         * Invalidate the client's nickname when receiving Replace ID
10916           packet and the Client ID is being replaced.  This means that the
10917           server will query the nickname if someone needs it (client)
10918           a bit later.
10919
10920         * Sort the ID Cache in client library when the ID Cache data
10921           has changed (needs sorting).
10922
10923         * Do not allow for SILC client to create several connections to
10924           several servers.  The client does not support windows right now
10925           and generating multiple connections causes weird behaviour.
10926
10927           Irssi-silc client does support windows and can handle several
10928           connections without problems, see: www.irssi.org and SILC plugin.
10929
10930         * Fixed some places where client was added to the IDList.  The
10931           rule of thumb is following (in order to get everything right):
10932           If the client is directly connected local client then the
10933           `connection' argument must be set and `router' argument must be
10934           NULL to silc_idlist_add_client function.  If the client is not
10935           directly connected client then the `router' argument must
10936           bet set and the `connection' argument must be NULL to the
10937           silc_idlist_add_client function.
10938
10939         * The funtion silc_server_packet_send_local_channel actually did
10940           not check whether the client was locally connected or not.  It
10941           does that now.  Fixed a bug related to LEAVE command.
10942
10943         * Fixed Remove Channel User payload parsing bug in server's
10944           silcd/packet_receive.c.  Fixed a bug related to LEAVE command.
10945
10946         * The server's silc_server_save_channel_key now checks also the
10947           global ID list for the channel as it might not be in the local
10948           list.  Fixed a bug related to LEAVE command.
10949
10950         * Is this the end of the [<unknown>] buglet that has been lurking
10951           around for a long time?  A little for loop fix in server's
10952           silc_server_command_whois_parse that is used by both IDENTIFY
10953           and WHOIS command.  At least, this was a clear bug and a cause
10954           of one type of [<unknown>] buglet.
10955
10956         * WHOIS and IDENTIFY commands call the function
10957           silc_server_command_[whois/identify]_check function even if
10958           we are not router server.
10959
10960 Tue Feb 13 19:55:59 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10961
10962         * Added --with-gmp configuration option.  If set the GMP
10963           is always compiled in the SILC source tree.  If not set then
10964           it is checked whether the system has the GMP3 installed.  If
10965           it has then the GMP won't be compiled (the system's headers
10966           and library is used), if it doesn't have it then the GMP is
10967           compiled in the SILC source tree.
10968
10969 Mon Feb 12 11:20:32 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10970
10971         * Changed RSA private exponent generation to what PKCS #1
10972           suggests.  We try to find the smallest possible d by doing
10973           modinv(e, lcm(phi)) instead of modinv(e, phi).  Note: this is
10974           not security fix but optimization.
10975
10976 Sun Feb 11 18:19:51 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10977
10978         * Added new config entry [Identity] to fork the server and run
10979           it as specific user and group.  A patch from Bostik.
10980
10981         * Imported Dotconf configuration library into lib/dotconf.
10982           This will be used to create the SILC configuration files later.
10983           It will appear in the distsribution after this commit.
10984
10985 Sat Feb 10 21:13:45 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10986
10987         * A big code auditing weekend happening.  Auditing code for
10988           obvious mistakes, bugs and errors.  Also, removing any code
10989           that is obsolete.
10990
10991           Removed files for being obsolete:
10992
10993           o lib/silcutil/silcbuffer.c (the buffer interface is entirely in
10994           inline in the file lib/silcutil/silcbuffer.h)
10995
10996           o lib/silcutil/silcbufutil.c (the header has inline versions)
10997
10998           Changed code to fix possible error conditions:
10999
11000           o The buffer formatting routines now check that the destination
11001           buffer really has enough space to add the data.  This applies for
11002           both buffer formatting and unformatting
11003           (lib/silcutil/silcbuffmt.[ch]).  Also, the entire buffer
11004           unformatting was changed to accomodate following rules:
11005           XXX_*STRING_ALLOC will allocate space for the data into the pointer
11006           sent to the function while XXX_*STRING will not allocate or copy
11007           the data into the buffer.  Instead it sets the pointer from the
11008           buffer into the pointer sent as argument (XXX_*STRING used to
11009           require that the pointer must be allocated already).  This change
11010           makes this whole thing a bit more consistent and more optimized
11011           (note that the data returned in the unformatting with XXX_*STRING
11012           must not be freed now).  The routines return now -1 on error.
11013
11014           o Tried to find all code that use buffer_format and buffer_unformat
11015           and added return value checking to prevent formatting and
11016           especially unformatting errors and possible subsequent fatal
11017           errors.
11018
11019           o Changed ske->x and ske->KEY to mallocated pointers in
11020           lib/silcske/silcske.h.  Fixed possible data and memory leak.
11021
11022           o Added return value checking to all *_parse* functions.  Fixed
11023           many memory leaks as well.
11024
11025           o Added length argument to silc_id_str2id in lib/silccore/id.[ch]
11026           so that buffer overflows would not happen.  All code now also
11027           checks the return value as it can fail.
11028
11029 Mon Feb  5 20:08:30 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
11030
11031         * Added reconnection support to server if the normal server looses
11032           its connection to the router (for example if router is rebooted).
11033           The server performs normal reconnection strategy implemented
11034           to the server.  Affected file silcd/server.c.
11035
11036 Sun Feb  4 13:18:32 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
11037
11038         * Added new packet type SILC_PACKET_SET_MODE that is used to
11039           distribute the information about changed modes (for clients,
11040           channels and clients channel modes) to all routers in the
11041           network.  Updated the protocol specification accordingly.
11042
11043           Added functions into silcd/packet_send.c and
11044           silcd/packet_receive.c: silc_server_send_set_mode,
11045           silc_server_set_mode.
11046
11047           Added new files silcmode.[ch] into lib/silccore that implements
11048           the encoding and decoding of Set Mode Payload.  Added new type
11049           SilcSetModePayload.  Moved the definitions of different modes
11050           from lib/silccore/silcchannel.h into lib/silccore/silcmode.h.
11051
11052 Sat Feb  3 15:44:54 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
11053
11054         * Oops, a little mistake in server's connection authentication
11055           protocol.  The protocol is not ended with FAILURE but with
11056           SUCCESS if the authentication is Ok. :)  Affected file is
11057           silcd/protocol.c.
11058
11059         * Implemented NICK_CHANGE notify handling in server in the file
11060           silcd/packet_receive.c  The NICK_CHANGE notify is distributed to
11061           the local clients on the channel.  After the changing nickname
11062           in router environment snhould work and the [<unknown>] nickname
11063           should appear no more.
11064
11065           The silc_server_replace_id function that receives the Replace ID
11066           payload now sends the NICK_CHANGE notify type also in the file
11067           silcd/packet_receive.c
11068
11069         * Changed WHOIS and IDENTIFY command to support the maximum amount
11070           of arguments defined in protocol specs (3328 arguments).  This
11071           fixed a bug that caused problems when there were more than three
11072           users on a channel.
11073
11074 Fri Feb  2 11:42:56 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
11075
11076         * Added extra parameter, command identifier, to the
11077           silc_client_send_command so that explicit command identifier
11078           can be defined.
11079
11080           Changed that ID list routines uses specific command identifier
11081           when sending WHOIS/IDENTIFY requests to the server so that they
11082           can be identified when the reply comes back.
11083
11084           Affected files lib/silcclient/command.[ch],
11085           lib/silcclient/client.c and lib/silcclient/idlist.[ch].
11086
11087         * Added `sender' argument to silc_server_packet_send_to_channel
11088           to indicaet the sender who originally sent the packet to us
11089           that we are now re-sending.  Ignored if NULL.  Affected file
11090           silcd/packet_send.[ch].
11091
11092         * Added some server statistics support in silcd/server_internal.h
11093           SilcServerStatistics structure and around the server code.  Also
11094           send some nice statistics information when client is connecting
11095           to the client.
11096
11097 Thu Feb  1 23:31:21 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
11098
11099         * Fixed channel ID decoding in server's JOIN command reply in
11100           silcd/command_reply.c
11101
11102         * Fixed braodcasting of replace ID payload to not to send it if
11103           we are standalone server in silcd/packet_receive.c.
11104
11105         * Fixed all channel message sending routines to not to send
11106           packets to clients that has router set, since they are routed
11107           separately in the same function earlier.  Affects file
11108           silcd/packet_send.c and all channel packet sending functions.
11109
11110         * In USERS reply, res_argv[i] are not allocated, the table
11111           is allocated.  Thus changed that free the table, not its
11112           internals.
11113
11114         * In server's whois_check and identify_check if the client is
11115           locally connected do not send any WHOIS commands - they are not
11116           needed.
11117
11118 Thu Feb  1 21:32:27 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
11119
11120         * Fixed some minor bugs in client when sending WHOIS command.  The
11121           arguments was in wrong order.
11122
11123         * Removed statis function add_to_channel from server in
11124           silcd/command.c that was previously used with the joining but
11125           is obsolete now.
11126
11127         * Tested USERS command in router environment successfully with two
11128           routers, two servers and two clients.
11129
11130 Thu Feb  1 00:54:26 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
11131
11132         * Reorganized the USERS command and command reply in client library
11133           in lib/silcclient/command.c and lib/silcclient/command_reply.c.
11134           When the command is given by user we register a pending command
11135           callback that will reprocess the command after the reply has been
11136           received from the server.  When reprocessing the packet we then
11137           display the information.  Thus, the USERS information is displayed
11138           now in the command callback instead of in the command reply
11139           callback.  The processing of the command is same as previously
11140           when server has sent the command reply in the JOINing process.
11141
11142         * Added to USERS command in silcd/command_reply.c to join the client,
11143           we didn't use to know about, to the channel after we've created
11144           a client entry for it.  Also, for clienet we did know already still
11145           check whether it is on the channel or not and add it if not.
11146
11147         * Removed silc_server_command_join_notify as the function and its
11148           use was obsolete.
11149
11150 Tue Jan 30 22:39:15 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
11151
11152         * Changed the client's pending command handling to the same as the
11153           server's pending command handling.  It is also now possible to
11154           execute command reply functions from other command reply
11155           function as the function callbacks for commands and command
11156           replies are one and same.  The pending commands are not static
11157           list anymore, it is mallocated SilcDList in lib/silcclient/client.h
11158           in client connection context.  Thus, pending commands are server
11159           connection specific as it is convenient.
11160
11161           Changed the function silc_client_command_pending and
11162           silc_client_command_pending_del and added new function
11163           silc_client_command_pending_check.  Removed the
11164           SILC_CLIENT_CMD_REPLY_EXEC, and SILC_CLIENT_PENDING_COMMAND_CHECK
11165           macros.
11166
11167         * Added cmd_ident, current command identifier, to the client
11168           connection context in lib/silcclient/client.h to keep track on
11169           command identifiers used in command sending.  Client's command reply
11170           function handling now supports the mandatory command identifiers.
11171
11172         * Added SILC_CLIENT_COMMAND_EXEC_PENDING macros to all command reply
11173           funtions in client to fully support pending command callbacks.
11174
11175         * NOTE: the name_list in USERS (old NAMES) command is NOT sent anymore
11176           as one of the arguments to the application in the command reply
11177           client operation.
11178
11179         * NOTE: The FORWARDED flag is depracated.  It used to be depracated
11180           before first releasing SILC but came back.  Now it is removed again
11181           and should come back nomore.  The FORWARDED flag was used only
11182           by the JOINing procedure by forwarding the command packet to router.
11183           Now, the JOINing procedure has been changed to more generic (due
11184           to various router environment issues) and FORWARDED is not needed
11185           anymore for anything.  The protocol specification is yet to be
11186           updated.
11187
11188           Now, removed silc_server_packet_forward from server and the flag
11189           SILC_PACKET_FORWARDED from lib/silccore/silcpacket.h.
11190
11191 Tue Jan 30 00:05:05 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
11192
11193         * Renamed NAMES command to USERS command.  The NAMES was named that
11194           due to historical reasons.  Now it is renamed.  Also, rewrote
11195           parts of the USERS command.  The nickname list is not sent anymore
11196           by the server.  Only Client ID and mode lists are sent in the USERS
11197           command.  Changed this also to the protocol specification.
11198
11199           The client now resolves the names and stuff after it receives
11200           the USERS list from the server when joining to the channel.
11201
11202         * WHOIS and IDENTIFY commands has been changed to support multiple
11203           Client ID's per command.  One can now search for multiple users
11204           in the network by sending only one WHOIS or IDENTIFY command.
11205           Changed the code and the protocol specifications.
11206
11207         * Removed silc_server_command_identify_parse and changed that IDENTIFY
11208           uses silc_server_command_whois_parse to parse the request. */
11209
11210         * If normal server, do not parse the WHOIS and IDENTIFY requests
11211           before sending it to the router.  Saves some time.
11212
11213 Sun Jan 28 16:19:49 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
11214
11215         * Fixed JOIN command on client library.  Wrong number of arguments
11216           used to crash the client.
11217
11218         * Added silc_server_channel_has_global function to check whether
11219           channel has global users or not.
11220
11221         * Added silc_server_channel_has_local function to check whether channel
11222           has locally connected clients on the channel.
11223
11224         * The silc_server_remove_from_one_channel now checks whether the
11225           channel has global users or not after given client was removed from
11226           the channel.  It also checks whether the channel has local clients
11227           on the channel anymore.  If it does not have then the channel entry
11228           is removed as it is not needed anymore.
11229
11230         * The silc_server_notify now checks on JOIN notify whether the joining
11231           client is one of locally connected or global.  If it is global then
11232           the channel has now global users on the channel and that is marked
11233           to the channel entry.  Also, it now saves the global client to
11234           global list who is joining and JOINs it to the channel.  This is
11235           for normal server, that is.
11236
11237           Changed silc_server_send_notify_on_channel,
11238           silc_server_packet_relay_to_channel and
11239           silc_server_packet_send_to_channel check if we are normal server
11240           and client has router set (ie. global client) do not send the
11241           message to that client, as it is already routed to our router.
11242
11243         * Implemented LEAVE notify type handling in silc_server_notify
11244           function.
11245
11246         * Tested LEAVE command in router environment successfully.  Tested
11247           with two routers, two servers and two clients.
11248
11249         * Updated TODO.
11250
11251         * idlist_find_xxx_by_id routines now dumps the ID on the debug mode.
11252
11253         * Implemented SIGNOFF notify type handling in silc_server_notify
11254           function.
11255
11256         * silc_server_remove_id now removes the client entry from all channels
11257           it has joined and thusly sends SIGNOFF notify type.
11258
11259         * Rewrote the NAMES list generation in server by removing two excess
11260           loops.  The lists are created now inside one loop.
11261
11262 Sat Jan 27 22:34:56 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
11263
11264         * silc_server_remove_channel_user checks now also global list
11265           for channel and client.
11266
11267         * silc_server_new_channel_user checks now both local and global
11268           list for channel and client.  Fixed a bug in client id decoding.
11269           Used to decode wrong buffer.
11270
11271         * silc_server_channel_message checks now both local and global
11272           list for channel entry.
11273
11274         * Tested channel joining (hence JOIN) in router environment
11275           successfully.  Tested with two routers, two servers and two
11276           clients.
11277
11278         * Tested channel message sending in router environment successfully.
11279
11280 Thu Jan 11 03:22:57 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
11281
11282         * Added silc_server_save_channel_key into server.[ch] to save the
11283           received channel key in Channel Key payload processing. It is
11284           also used in JOIN command reply handling.
11285
11286           Equivalent function silc_client_save_channel_key added into
11287           client.[ch] into client library.
11288
11289         * Changed JOIN command reply to send information whether the channel
11290           was created or not (is existing already) and the channel key
11291           payload.  Changed protocol specs accordingly.
11292
11293         * Fixed bugs in WHOIS and IDENTIFY command reply sending when
11294           the request was sent by ID and not by nickname.  Crashed on
11295           NULL dereference.
11296
11297 Sat Dec 23 21:55:07 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11298
11299         * Fixed a bug in Client library.  IDENTIFY and WHOIS reply functions
11300           now correctly save the received data.
11301
11302         * silc_server_free_sock_user_data now notifies routers in the
11303           network about entities leaving the network.
11304
11305           At the same time implemented functions silc_server_remove_id
11306           and silc_server_send_remove_id to receive and send REMOVE_ID
11307           packets.  The packet is used to notify routers in the network
11308           about leaving entities.  The ID removed will become invalid in
11309           the network.
11310
11311         * Added function silc_idlist_del_server into server. Removes and
11312           free's server entry from ID list.
11313
11314         * silc_server_private_message function now checks, if we are router,
11315           that the destination ID really is valid ID, naturally.
11316
11317         * In router when NEW_ID packet is received (for new client) the
11318           hash of the Client ID is saved in the ID Cache but the
11319           client->nickname is set to NULL, instead of putting the hash
11320           to it as well.
11321
11322           IDENTIFY command now also checks that client->nickname must be
11323           valid. If it is not if will request the data from the server who
11324           owns the client.  Added new function
11325           silc_server_command_identify_check.
11326
11327         * Added silc_command_set_command into lib/silccore/silcommand.[ch]
11328           to set the command to already allocated Command Payload.
11329
11330         * Tested private message sending in router environment with two
11331           routers, two servers and two clients.  Fixed minor bugs and now
11332           it works fine.
11333
11334         * Fixed segfault from client's NAMES command. Used to crash if
11335           not on any channel.
11336
11337         * Forwarded packets must not be routed even if it is not destined
11338           to the receiver.  Changed server code comply with this.
11339
11340 Sun Dec 17 14:40:08 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11341
11342         * Added `require_reverse_mapping' boolean value to ServerParams
11343           structure. If TRUE (not default) the server will require that
11344           the connecting host has fully qualified domain name.
11345
11346           If the reverse mapping is not required and hostname could not be
11347           found the IP address is used as hostname.
11348
11349 Sat Dec 16 17:39:54 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11350
11351         * Implemented version string checking to both client and server.
11352           The check is incomplete currently due to the abnormal version
11353           strings used in development version of SILC.
11354
11355         * Changed all command functions in server to use the new
11356           CHECK_ARGS macro.
11357
11358 Fri Dec 15 15:55:12 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11359
11360         * Changed char *data to unsigned char *data in ID Cache system to
11361           support binary data as ID Cache data. Changed code to support
11362           binary data in lib/silccore/idcache.c.
11363
11364         * Renamed silc_server_packet_relay_command_reply to
11365           silc_server_command_reply as it is normal packet receiving
11366           function. Rewrote the function to accept command replys for
11367           servers and not only for clients.
11368
11369         * Mark remote router always as registered server if we are connecting
11370           to it.  Otherwise, commands sent by the router to us are ignored.
11371
11372         * All ID List find routines now returns the ID Cache Entry pointer
11373           as well if requested.
11374
11375         * WHOIS command works now in router environment, tested with two
11376           routers, two servers and two clients.
11377
11378         * Cleaned up and rewrote IDENTIFY command. IDENTIFY should work now
11379           in router environment (as it is almost equivalent to WHOIS) but
11380           hasn't been tested thoroughly.  Added new functions:
11381
11382           silc_server_command_identify_parse
11383           silc_server_command_identify_send_reply
11384           silc_server_command_identify_from_client
11385           silc_server_command_identify_from_server
11386
11387         * Disabled route cache adding because adding two different ID's with
11388           same IP replaces the old cache entry thus giving wrong route.
11389           The entry->router->connection is always the fastest route anyway
11390           so route cache may not be needed.  Of course, new routes maybe
11391           established after receiving the ID when the entry->router->connection
11392           might not be anymore the most optimal.
11393
11394 Thu Dec 14 15:55:35 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11395
11396         * Add route cache for received ID for fast routing.
11397
11398         * Added silc_server_packet_route to route received packet on router
11399           that is not destined to us.
11400
11401         * Renamed silc_server_get_route to silc_server_route_get.
11402
11403         * Added id_string and id_string_len fields into SilcServer to
11404           include encoded ServerID for fast comparing without excess
11405           encoding of the ID's.
11406
11407         * Cleaned up WHOIS command on server side. Added following static
11408           functions:
11409
11410           silc_server_command_whois_parse
11411           silc_server_command_whois_check
11412           silc_server_command_whois_send_reply
11413           silc_server_command_whois_from_client
11414           silc_server_command_whois_from_server
11415
11416         * Added macro SILC_SERVER_COMMAND_CHECK_ARGC to check mandatory
11417           arguments in command replies. All command functions should be
11418           updated to use this macro.
11419
11420 Sun Dec 10 23:52:00 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11421
11422         * Minor typo fixes on command reply handling on server.
11423
11424 Tue Nov 28 11:05:39 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11425
11426         * Added silc_server_command_add_to_channel internal routine to add
11427           the client to the channel after router has created the channel and
11428           sent command reply to the server.
11429
11430         * Added generic silc_server_send_command to send any command from
11431           server.
11432
11433         * Use static buffer with ID rendering instead of duplicating data.
11434
11435 Mon Nov 27 21:39:40 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11436
11437         * Fixed a channel user mode bug when joining to a channel server gave
11438           everybody channel founder rights, oops.
11439
11440         * We mark ourselves as the router of the incoming server connection
11441           if we are router ourselves.  This way we can check in some packet
11442           sending functions whether it is locally connected server.  For
11443           incoming router connections we put NULL.
11444
11445         * For router sending packets locally means now always sending the
11446           packet cell wide; to local clients and local servers.  For normal
11447           server sending packet locally means sending it to only local
11448           clients.
11449
11450         * Fixed the JOIN command to really work in router environment.  If the
11451           channel is created it is always created by the router.  Router is
11452           also responsible of making the initial joining to the channel,
11453           sending JOIN notify to the sending server and distributing
11454           NEW_CHANNEL and NEW_CHANNEL_USER packets.  Hence, if the channel
11455           does not exist server doesn't do anything else but forward the
11456           command to the router which performs everything.
11457
11458         * Added silc_server_send_channel_key function to send the Channel Key
11459           payload.
11460
11461         * Added silc_server_create_channel_key to create new channel key.  The
11462           channel key is now re-generated everytime someone joins or leaves
11463           a channel, as protocol dictates.  Note: channel->key_len is the
11464           key length in bits.
11465
11466 Wed Nov 22 22:14:19 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11467
11468         * Splitted server.[ch] finally.  Created now packet_send.[ch] and
11469           packet_receive.[ch] to separate packet sending and receiving
11470           routines.  The server.[ch] now includes everything else including
11471           actual packet processing (writing and reading data) and other
11472           server issues.
11473
11474           Renamed silc_server_private_message_send_internal to
11475           silc_server_send_private_message.  The routine is still though
11476           used only to relay private messages as server does not send
11477           private messages itself.
11478
11479           Renamed silc_server_new_channel to silc_server_create_new_channel
11480           and added new function sicl_server_new_channel that handles the
11481           incoming New Channel packet.  Added also new sending function
11482           silc_server_send_new_channel to send New Channel Payload.
11483
11484         * Added new function silc_server_notify to process incoming notify
11485           packet to the server/router. Server may then relay the notify
11486           to clients if needed.
11487
11488         * Added new function silc_server_new_channel_user to process incoming
11489           New Channel User packet.  Router will redistribute the packet and
11490           send JOIN notify to its local clients and locally connected servers
11491           if needed.  Normal server will send JOIN notify to its local client
11492           on same channel when received this packet.  Added also corresponding
11493           sending function silc_server_send_new_channel_user to sent the
11494           payload.
11495
11496         * Added boolean route argument to send_notif_to_channel and
11497           packet_send_to_channel functions to attempt to route the packet
11498           if it is TRUE and send only locally if it is FALSE.
11499
11500 Tue Nov 21 19:49:31 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11501
11502         * silc_server_replace_id now broadcasts the received replace ID
11503           packet if it is not broadcast packet already. The router must
11504           broadcast to inform other routers about changed ID.
11505
11506         * Added backpointer to server's router into SilcServer context in
11507           silcd/server_internal.h.
11508
11509         * Fixed silc_server_packet_broadcast to send correct broadcast
11510           packets.
11511
11512         * The channel key is now distributed to the local client as soon
11513           as it is received from the router (in router environment) so that
11514           no other packet may be sent for the channel until client has
11515           received the key.
11516
11517         * silc_server_remove_channel_user now broadcasts the received
11518           Remove Channel User packet if it is not broadcast packet already.
11519           The router must broadcast to inform other routers about removed
11520           channel user.
11521
11522         * Added users field into SilcPacketContext that is a reference count
11523           of the context.  One can increase the reference count by calling
11524           silc_packet_context_dup which is now changed to just increase the
11525           reference count instead of duplicating the data.  The reference
11526           count is decresed by calling silc_packet_context_free that will
11527           free the data after the reference count hits zero.
11528
11529           For now on the packet context and everything allocated into it
11530           (including the raw packet from network) must be freed by calling
11531           the new silc_packet_context_free function.  Added also new function
11532           silc_packet_context_alloc that must be used now to allocate the
11533           context.  This also means that if a routine is asynchronous from
11534           silc_[client/server]_packet_parse_type the packet context must
11535           be duplicated by calling silc_packet_context_dup.  Otherwise it
11536           gets free'd after silc_[client/server]_packet_parse_type returns.
11537           Also, one must remember that if packet is duplicated then its
11538           reference count must be decresed by calling the free function as
11539           many times as it was duplicated.
11540
11541         * Changed SilcBuffer field from protocol contexts to SilcPacketContext
11542           from both client and server.
11543
11544 Mon Nov 20 23:47:03 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11545
11546         * Made joining to a channel working in router environment.
11547
11548         * Cleaned up JOIN command on server side and create function
11549           silc_server_command_join_channel internal routine to make the
11550           joining happen.
11551
11552 Thu Nov  9 21:12:39 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11553
11554         * Changed silc_command_pending list to SilcDList.  Also, added
11555           `ident' field to SilcServerCommandPending structure to identify
11556           the reply and to call correct callback.
11557
11558           Added silc_server_command_pending_check function to replace the
11559           corresnponding macro.  The silc_command_pending list is not
11560           extern anymore.
11561
11562         * Added silc_command_set_ident into lib/silccore/silccommand.[ch]
11563           to set identifier to previously allocated Command Payload.  It
11564           is used to set identifier for command when resending Command
11565           Payload.
11566
11567         * Added silc_command_payload_encode_payload to encode Command
11568           Payload buffer from SilcCommandPayload structure.
11569
11570         * Added silc_argument_payload_encode_payload to encode Argument
11571           payload buffer from SilcArgumentPayload structure.
11572
11573 Wed Nov  8 21:03:28 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11574
11575         * Changed WHOIS command to support router connection on server side.
11576           The whois request is always sent to router unless the server is
11577           standalone server.  After server has received the reply from the
11578           router will it send the reply to the client.
11579
11580         * Added silc_server_packet_broadcast into silcd/server.[ch] to
11581           broadcast received broadcast packet.  The function is used only
11582           by router.  The broadcast packet is always sent to the router's
11583           primary route.
11584
11585         * Added silc_id_render function in lib/silcutil/silcutil.[ch] to
11586           render given ID to printable string, for log files for example.
11587
11588 Tue Nov  7 22:14:19 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11589
11590         * Made basic router to router connections working.  At least they
11591           can now connect to each other but nothing really works the way
11592           they are supposed - yet.
11593
11594         * Added new initiator token to RouterConnection configuration
11595           file in silcd/serverconfig.[ch].  It is used to tell whether we
11596           are the initiator to the remote router or whether we'll expect
11597           the other end to connect.
11598
11599         * Moved registering of listener task to silc_server_init, hence
11600           the server starts listenning as soon as it is run, even if it
11601           does not have connections to other routers.  Let's see how well
11602           this will work.
11603
11604         * Changed default connection retry timeouts for more suitable in
11605           silcd/server.h.
11606
11607         * Removed cipher and such arguments from silc_idlist_add_client
11608           and silc_idlist_add_server prototypes from silcd/idlist.[ch].
11609           Added new function silc_idlist_add_data to add the keys and stuff
11610           to any ID entry.
11611
11612         * Added SilcIDListData structure and added it to SilcClientEntry
11613           and SilcServerEntry as their first field in the structure.  This
11614           way we can explicitly cast the ID entries to the SilcIDListData
11615           structure and get common data for the entries.  In past, we had
11616           to first check what type of connection it is and then cast it to
11617           correct ID entry type.  Now, we can directly cast the opaque
11618           pointer to the SilcIDListData (no matter what ID entry it actually
11619           is) and get the data needed.
11620
11621 Mon Nov  6 21:56:12 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11622
11623         * Wow, found a bug in scheduler.  The scheduler uninitialized itself
11624           in some circumstances even if threre were timeout tasks, though not
11625           IO tasks, but tasks anyway.  Now fixed.
11626
11627         * Defined SilcServerConnection structure to hold connection specific
11628           stuff about directly connected servers and routers.  The definition
11629           is currently in silcd/server_internal.h.  I thought about having
11630           a bit more important role fro this struct but for now it is used
11631           only when connecting to other server (or router actually).
11632
11633         * Added connecting retry support in server when connecting to
11634           router(s).  The retry feature implement exponential backoff
11635           algorithm.  Also, added SilcServerParams structure to hold default
11636           parameters for server.  For now, it include these retry settings
11637           and are hard coded.  After server is moded to be as Silc Server
11638           Library this structure will be more important.
11639
11640 Sun Nov  5 22:28:44 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11641
11642         * Changed client librarys channel->clients table to SilcList and
11643           changed code accordingly.
11644
11645 Thu Nov  2 16:28:01 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11646
11647         * Changed client's channel table to SilcList and changed code
11648           accordingly.  Also changed SilcChannelClientEntry to include back-
11649           pointer to the channel so that client entry can use that structure
11650           as list as well and we have fast cross-reference to the channel.
11651           This change dramatically decreased the complexity of channel
11652           handling with client entry and vice versa (removed one extra
11653           loop when searching for channel entry from many functions).
11654
11655         * Changed server->sim from table to SilcDList and changed code
11656           accordingly.
11657
11658         * NAMES command can now be used from user interface.  It will show
11659           the user list on the channel, neatly.
11660
11661         * Added realname pointer to SilcClientEntry in lib/silcclient/idlist.h.
11662           Code now saves realname of the user if it becomes available.
11663
11664         * Renamed configure.in to configure.in.pre and made ./prepare
11665           script to automatically add correct version string to
11666           configure.in which it creates from configure.in.pre.
11667
11668 Wed Nov  1 17:21:26 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11669
11670         * NAMES command reply now shows users mode with the nickname when
11671           joining to channel.
11672
11673         * Moved silc_client_ch[u]mode[_char] functions from
11674           silc/clientutil.[ch] to lib/silcclient/client.[ch].  Though, that
11675           place sucks, they are utility functions and should be in some
11676           other file.
11677
11678         * Fixed some unsigned int's to unsigned short's.  Patch by cras.
11679
11680         * Fixed contrib/getopt*.[ch] to not require config.h.  Patch by
11681           cras.
11682
11683 Tue Oct 31 20:10:37 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11684
11685         * Updated README.
11686
11687         * Added TRQ (efficient deque and list library) into lib/trq.  This is
11688           a very good list library that is currently used in the SILC.  Defined
11689           SilcList API over the library because I didn't like the API very
11690           much.  See lib/trq/silclist.h for the API and examples of how to
11691           use the API.  Fixed various places in the code to use the new
11692           SilcList API. The SilcList is meant for lists that has a structure
11693           already defined as a list.  It is not suitable to add just some
11694           context to the list (in TRQ, the context is the list actually).
11695
11696           So, I defined SilcDList that can be used for the purpose where
11697           predefined list structure does not exit.  This can be used as
11698           such list.  Now some context just can be added to the SilcDList.
11699           Currently this list is not used in the SILC just yet, though there
11700           are a lot places where this can replace dynamically allocated
11701           tables and I will fix these places, later, to use SilcDList.
11702           See lib/trq/silcdlist.h for SilcDList (they are all inline functions,
11703           and use TRQ internally).
11704
11705           Also fixed some annoying warning messages that the original TRQ
11706           code generated.  Also minor changes to TRQ's Makefile.in.
11707
11708         * Added support for querying by Client ID to both WHOIS and
11709           IDENTIFY commands into server, as required by the protocol.
11710
11711         * Removed method function pointers from SilcBuffer structure. They
11712           weren't used to anything and just increased the context size for
11713           no good reason.  This change also made silc_buffer_alloc and
11714           silc_buffer_free functions inline functions.
11715
11716         * Disabled command flooding detection support until it's fixed so
11717           that it accepts commands in but does not execute them more than once
11718           in two seconds.
11719
11720         * Added silc_net_localhost(), to return local hostname, into
11721           lib/silcutil/silcnet.[ch].  Also added client->hostname pointer
11722           that must be initialized before calling silc_client_init.
11723
11724         * Added new function: silc_server_send_notify_on_channels to send
11725           notify messages to all channels client has joined.  It is assured
11726           that the message is sent only once per client.
11727
11728         * Moved silc_log_format (from lib/silcutil/silclog.[ch] into
11729           lib/silcutil/silcutil.[ch] as silc_format function.  The new
11730           function is generic and is used by server as well, not only by
11731           the logging routines.
11732
11733         * Added new SKE status type: SILC_SKE_STATUS_BAD_VERSION to indicate
11734           the provided version string was not acceptable.  Added new function:
11735           silc_ske_check_version into lib/silcske/silcske.h.  The function
11736           must be implemented by the application (client or server) and it
11737           does not reside in the SKE library.  The function checks the version
11738           string remote end sent.
11739
11740         * Added back pointers (to opaque context and to SilcSocketConnection)
11741           into SilcPacketContext structure into lib/silccore/silcpacket.h.
11742
11743         * Added silc_packet_context_dup into lib/silccore/silcpacket.[ch] to
11744           duplicate packet context structure.
11745
11746         * Changed `notify' client operation to send same arguments as client
11747           receives from server except for ID's.  ID's are mapped to correct
11748           ID entry and that is returned.  Also, if channel entry is not sent
11749           by server but the notify is for channel the channel entry is sent
11750           to application (otherwise application doesn't know that it is for
11751           channel (library gets it from packet's Destination ID)).
11752
11753         * Added silc_client_remove_from_channels into client library to
11754           remove a client from all channels it has joined to.  Used when
11755           received SIGNOFF notify from server.  Added also new function
11756           silc_client_replace_from_channels to replace old ID entry with
11757           new ID entry on all channels.  Used when received NICK_CHANGE
11758           notify from server.
11759
11760         * Fixed ID Cache list handling in silc_idlist_get_client in
11761           lib/silcclient/idlist.c.  Also, added silc_idlist_get_client_by_id
11762           to get (or query) client by ID.
11763
11764         * Updated TODO list.
11765
11766         * Added connection authentication status message defined by the
11767           protocol: SILC_CONN_AUTH_OK and SILC_CONN_AUTH_FAILED and added the
11768           support for these into the code in client and server side.
11769
11770         * Added generic function silc_client_send_command to send any command
11771           with variable argument list.  Application should use this function
11772           to send commands if the command functions provided by the library
11773           does not suite for the application's user interface needs.
11774
11775         * Added new `failure' client operation.  Application is notified about
11776           received failure packet if client is executing a protocol.  In this
11777           case the protocol's execution has failed.
11778
11779         * Added SKE's end notify to send the SKE_SUCCESS notify message that
11780           is required by the protocol.
11781
11782         * Added SILC_PROTOCOL_STATE_FAILURE to indicate received failure
11783           packet from remote.  SILC_PROTOCOL_STATE_ERROR indicates local
11784           error at our end.
11785
11786         * Added status flag to SilcSKE object to indicate realtime status
11787           of the SKE protocol.
11788
11789         * Application receives now exactly same command reply arguments as
11790           the library receives from server.  However, if ID is received the
11791           corresponding ID entry is returned to the application (eg. Client
11792           ID is mapped to correct SilcClientEntry entry and that is returned).
11793           Changed command_reply client operation due to this change.
11794
11795         * Changed all ID's in commands and in command replys as ID Payloads.
11796           Change affected both client and server side codes.
11797
11798           All ID's sent in SILC network (with execption of ID's in SILC
11799           Packet header) are sent in ID Payload to support variable length
11800           ID's.
11801
11802         * Server now notifies nick changes and notifies all clients on
11803           the channels about the new nickname (about the new Client ID,
11804           actually).
11805
11806         * Implemented CMODE command to change channel modes. Supports all
11807           channel modes defined by the protocol specs except ban and invite
11808           lists. (Also, private channel key mode is supported but support for
11809           setting private channel key in client is missing, thus, this mode
11810           has no effect on client side (except that server requires that the
11811           client uses private channel key and normal channel traffic does not
11812           work anymore)).
11813
11814           Also, invite mode works per se, but INVITE command does not work
11815           yet correctly, so you can set channel as invite only channel but
11816           inviting clients to the channel does not work (it is yet to be
11817           thought what's the best way to do it).
11818
11819         * Added new command SILC_COMMAND_CUMODE to change user mode on the
11820           channel.  Defined user modes: CHANNEL_FOUNDER and CHANNEL_OPERATOR.
11821           Implemented CUMODE command to change user's mode on the channel.
11822           Supports all modes defined by the protocol specs.
11823
11824         * Added NAMES command reply to return users modes on the channel.
11825
11826         * Removed unnecessary and slow ciphers from lib/silccrypt.
11827
11828         * Set SO_KEEPALIVE option to connection sockets by default.
11829
11830         * Added new command reply status: SILC_STATUS_USER_NOT_ON_CHANNEL.
11831
11832         * Added notify types: MOTD, CMODE_CHANGE and CUMODE_CHANGE.  Also,
11833           redefined the Notify Payload into protocol specs.
11834
11835         * Added silc_id_payload_parse_id to get ID directly from raw
11836           ID payload data.
11837
11838 Mon Oct  9 20:57:02 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11839
11840         * Changed SILC_COMMAND_IDENTIFY in protocol specification to
11841           accept searching by Client ID as well.
11842
11843         * Added support for LEAVE and SIGNOFF notify types in client library.
11844
11845         * Added silc_id_payload_parse_data into lib/silccore/silcpayload.[ch]
11846           to parse ID Payload from raw data.
11847
11848 Sun Oct  8 19:33:08 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11849
11850         * Added flags parameter into silc_ske_assemble_security_properties
11851           function in lib/silcske/silcske.[ch].
11852
11853         * Changed notify client operation to fit better for notify messages
11854           sent by server.  The notify payload received from server is now
11855           passed to the application (after parsing it to SilcNotifyPayload).
11856           It is application's responsibility to retrieve the arguments
11857           from the payload and show the message the way it wants.  The message
11858           sent by server is implementation specific.
11859
11860         * Changed public keys to comply with the protocol specification.
11861           Old public keys are not supported anymore and are not compatible.
11862
11863         * Removed nickname from Channel Payload as the latest draft removed
11864           it.  The client must resolve the nickname from the NAMES command
11865           reply received when it joined the channel.
11866
11867           Also, changed all channel_xxxx_payload to channel_payload_xxxx.
11868
11869 Sat Oct  7 21:55:01 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11870
11871         * Fixed some errors in protocol specification drafts.
11872
11873         * Created lib/silccore/silcnotify.c to implement Notify Payload
11874           encoding and decoding, lib/silccore/silcpayload.[ch] to implement
11875           generic payloads described by protocol specifications.  The file
11876           includes implementations for ID Payload and Argument Payload.
11877
11878         * Changed Command Payload implementation to use the new Argument
11879           Payload.  Changed command_xxxx_payload to command_payload_xxxx
11880           to comply with SILC coding conventions.
11881
11882         * Added suppport for Argument Payload handling in Notify Payload
11883           implementation as protocol requires it.  Added the new support
11884           into server and client lib as well.
11885
11886 Thu Oct  5 21:16:28 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11887
11888         * Added support for multiple nicknames on same channel.  [n] is
11889           added locally to the nickname if there are more than one same
11890           nicknames on the channel.
11891
11892         * Server now sends all nicknames that matched WHOIS request.
11893           Client also shows the list received from server.
11894
11895         * Added TOPIC command to client side.  User can now set and show
11896           current topic on channel.
11897
11898         * Added MOTD command to client and server.  Also, server sends the
11899           motd when client connects to the server.
11900
11901         * Changed version strings to comply ISO 8601.
11902
11903 Wed Oct  4 23:29:06 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11904
11905         * Fixed protocol error handling in client library.  It should now
11906           cope even if the SKE fails for some reason.
11907
11908         * Made new protocol specification drafts for submitting to IETF.
11909
11910         * Implemented TOPIC command to server in silcd/command.c.
11911
11912         * Added two new notify types into lib/silccore/silcnotify.h:
11913           SILC_NOTIFY_TYPE_NICK_CHANGE and SILC_NOTIFY_TYPE_TOPIC_SET to
11914           notify nickname change and topic setting/change on a channel.
11915
11916         * API change of command_reply operation in client library.  The
11917           application gets now the status type received from server as well.
11918
11919 Sat Sep 30 16:57:42 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11920
11921         * Removed the function just added to lib/silcutil/silcschedule.[ch].
11922
11923         * Cras fixed and optimized the packet handling even further and
11924           it should work now.  Minor change to the prototype of function
11925           silc_packet_receive_process in lib/silccore/silcpacket.[ch].
11926
11927 Sat Sep 30 08:48:47 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11928
11929         * Added new function into lib/silcutil/silcschedule.[ch]:
11930           silc_schedule_with_fd to select() a specified fd.  The function
11931           returns after timeout expires or data arrives or goes.  The
11932           function is used by packet routines to wait that all data is
11933           received from network.
11934
11935         * Fixed data reading from network in lib/silccore/silcpacket.c.
11936           The code now assures that all data is read from the fd and then
11937           continues packet processing.  This was a bug fix since the code
11938           used to drop some data in some circumstances.
11939
11940         * Added new function into lib/silcclient/client.[ch]:
11941           silc_client_start_key_exchange to start key exchange after
11942           connection has been established to server.  The code internally
11943           now uses this funtion but its main purpose was to provide it
11944           for applications that perform their own connecting.  After
11945           application has created a connection it merely calls this
11946           function to start the key exchange between client and server.
11947           The library takes care of everything else after that.
11948
11949           Updated also lib/silcclient/README to explain the usage of
11950           this new function.
11951
11952         * Do not send to application information that connection has
11953           been established.  Application gets notified it by connect
11954           operation anyway.
11955
11956 Thu Sep 28 23:40:19 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11957
11958         * Applied cras's patch to add silc_schedule_one function.  The
11959           function runs scheduler once and returns.
11960
11961         * Fixed the scheduler after cras messed it up.  The timeout
11962           handling works now as it's supposed to work.
11963
11964         * Added into lib/silccore/ silcnotify.h to include notify
11965           message types support.  Changed silc_server_send_notify*
11966           functions, in server.[ch], to support those new notify types.
11967           Added the support for the notify types into client library,
11968           as well.  Added new notify client operation into ops.h in
11969           lib/silcclient/.
11970
11971         * Changed silc_server_packet_send_to_channel to send normal
11972           packets instead of just channel message packets.  The function
11973           is now used to send the notify packets to channels.  It is not
11974           used to send channel message packets anymore, as server never
11975           sends them anymore.
11976
11977         * Added explicit casting into lib/silcutil/silcbuffmt.c to few
11978           va_arg()s as it seems to require it nowadays.  I guess, if SILC
11979           is compiled with older va_arg() the new code should work anyway.
11980
11981 Wed Sep 13 18:10:14 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11982
11983         * Splitted core library.  Core library (lib/silccore) includes
11984           now only SILC protocol specific core (and common) components.
11985           Created new utility library (lib/silcutil) that includes more
11986           generic purpose stuff.  The stuff for util library was taken
11987           from the old core library.  This was minor and easy split.
11988
11989         * Created SILC Client Library (lib/silcclient) that includes
11990           implementation of the SILC client without user interface.  This
11991           was major move from silc/ directory.  The code has been changed
11992           so that it is transparent towards the user interface.  The
11993           silc/ directory includes now the same user interface as before
11994           and it uses the new client library.  Read lib/silcclient/README.
11995           Basicly, the client library performs everything else related
11996           to SILC except user interface handling.  Also, configuration
11997           files are considered to be part of user interface and library
11998           does not handle them.
11999
12000           This change also changed a lot of structures, function naming etc.
12001           Most important change was that SilcClientWindow object was
12002           renamed to SilcClientConnection in the client library.  Created
12003           also new file lib/silcclient/ops.h.  Also added new files
12004           silc/local_command.[ch] and silc/client_ops.[ch].
12005
12006           All these changes were made to make it easier for user interface
12007           designers to create what ever user interface for the SILC client
12008           they want.
12009
12010           It is also expected that the server will be moved to lib
12011           directory as well and SILC Server Library will be created;
12012           sometimes in the future.
12013
12014         * Removed Local commands from lib/silccore/silccommand.h as
12015           they are application specific and new client library does not
12016           handle any of those anymore.
12017
12018         * Several functions moved to lib/silcutil/silcutilc.[ch] from
12019           old client implementation in silc/.
12020
12021         * Added support for callback functions in SILC_LOG_* macros.
12022           Application can now set its own callbacks that will be called
12023           instead of using the default functions that will always print
12024           the debug messages to stderr (or stdout).  Also, debugging can
12025           now be disabled by setting silc_debug to FALSE and re-enabled by
12026           setting it to TRUE.  Note, that logging will still work even
12027           if debugging is disabled.
12028
12029           New functions in lib/silcutil/silclog.[ch]: silc_log_set_callbacks,
12030           silc_log_reset_callbacks, silc_log_set_debug_callbacks and
12031           silc_log_reset_debug_callbacks.
12032
12033         * To enable debugging in silc client one must give now -d
12034           option on command line.
12035
12036         * Changed silc_schedule_init to automatically allocate task queues
12037           if they are not allocated before calling it.
12038
12039 Thu Sep  7 10:49:33 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
12040
12041         * Added GMP 3.1 into math library.
12042
12043 Sun Aug 20 21:27:26 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
12044
12045         * Added SILC_PACKET_REMOVE_CHANNEL_USER to remove a client from
12046           a channel in SILC network.  The packet is used by servers and
12047           routers to notify other routers that user has left a channel.
12048           This little feature was missing until now.  Added the feature
12049           to protocol specification as well.
12050
12051           Added functions: silc_server_send_remove_channel_user and
12052           silc_server_remove_channel_user into server.[ch].
12053
12054         * Added SILC_PACKET_REKEY and SILC_PACKET_REKEY_DONE into
12055           lib/silccore/silcpacket.h.  However, they are not implemented
12056           yet.
12057
12058 Sat Aug 19 23:04:16 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
12059
12060         * Fixed joining to a channel and sending channel messages
12061           between server and router.  The channel message sending should
12062           now work inside a cell.
12063
12064 Tue Jul 25 20:46:13 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
12065
12066         * Fixed the private message sending between server and router.
12067           The private message sending should now work inside a cell.
12068
12069         * Added silc_server_replace_id into server.[ch] to replace
12070           existing ID in the SILC network.
12071
12072         * Added silc_idlist_find_server_by, silc_idlist_replace_client_id
12073           and silc_idlist_replace_server_id into idlist.[ch] in server.
12074
12075 Mon Jul 24 18:33:31 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
12076
12077         * Fixed the server to server connections.  Server can again now
12078           connect to router.  Router to router connections probably does
12079           not work just yet.
12080
12081 Thu Jul 20 13:15:01 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
12082
12083         * Added dynamic protocol registering support.  Now protocols can
12084           registered and unregistered on the fly.  Patch by cras.
12085
12086 Wed Jul 19 19:08:46 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
12087
12088         * Added lib/contrib directory to hold routines that some platforms
12089           don't have but are needed by SILC.
12090
12091         * Added getopt.c, getopt1.c and getopt.h from GNU C library
12092           into lin/contrib to provide getopt() and getopt_long() for
12093           those who don't have it.
12094
12095 Tue Jul 18 20:41:20 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
12096
12097         * Added AWAY command to client.  When away message is set and
12098           client receives a private message packet the client automatically
12099           replies to the sender with the away message.
12100
12101         * Fixed a bug in lib/silcmath/mpbin.c: silc_mp_mp2bin.  This
12102           bug seemed to be the cause of recent problems when compiling
12103           with gcc-2.95.
12104
12105         * Added version detection support to SKE protocol specification
12106           and added the new changes to the SKE implementation as well.
12107           There were other minor changes in the SKE protocol as well.
12108
12109           Many changes in lib/silcske/silcske.[ch] and in
12110           lib/silcske/payload.[ch].
12111
12112         * Added ^U functionality, clear input line.  Patch from cras.
12113
12114 Mon Jul 17 23:33:26 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
12115
12116         * Mainly small bugfixes on core library.  Fixed some debugging
12117           logging and buffer overflow in silclog.c.
12118
12119         * Updated config.sub and config.guess on the distribution tree.
12120
12121 Sat Jul 15 15:33:48 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
12122
12123         * Added command lagging support in server. Client may execute
12124           commands now only once in two seconds.
12125
12126 Thu Jul 13 22:10:21 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
12127
12128         * Optimized packet reception. MAC computation and checking is now
12129           also more optimized.  A lot previously duplicated code is now
12130           used as generic by both client and server.
12131
12132         * Fixed key pair generation in clientutil.c
12133
12134 Wed Jul 12 18:28:07 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
12135
12136         * Added into lib/silccore/silcbufutil.[ch] new function;
12137           silc_buffer_realloc.
12138
12139         * Moved generic packet sending/encryption functions to
12140           lib/silccore/silcpacket.[ch] from client and server.  Some
12141           rewriting of the functions.
12142
12143         * Moved all generic packet reception/decryption functions to
12144           lib/silccore/silcpacket.[ch] from client and server.  The
12145           packet processing is now much cleaner in both client and server.
12146           These were major changes in both client and server.
12147
12148         * Created many common functions in server to do packet sending.
12149           Previously code were duplicated a lot, this has been removed
12150           with these changes.
12151
12152 Tue Jul 11 20:27:26 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
12153
12154         * Rewrote major parts of the ID cache system.  Don't know
12155           whether it is better now or not but at least the API is more
12156           cleaner now.
12157
12158         * Major rewrite on ID cache stuff on client because of the ID
12159           cache API changes.  Added idlist.c to client.
12160
12161         * Also major rewrite on ID cache stuff on server as well.
12162           Major rewrite of idlist.[ch]. SilcXXXList's are now named
12163           SilcXXXEntry's.  We won't keep anymore idlist specific pointers
12164           in hand, instead they are all put into the ID cache system now.
12165           All server_idlist_* routines uses ID cache now instead of
12166           traversing its own lists (those lists does not exist anymore).
12167           SilcIDList though still exists.  Also, SilcXXXEntry's are
12168           now pointers.
12169
12170 Sun Jul  9 15:19:24 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
12171
12172         * Finally made the SKE implementation compliant to the protocol
12173           specification.  All mp integers are now binary encoded as
12174           opposed being HEX encoded.
12175
12176         * Added lib/silcmath/mpbin.[ch].  Encoding mp intergers to and
12177           from binary data.
12178
12179         * Added into lib/silccore/silcutil.[ch] PEM encoding/decoding
12180           functions: silc_[encode/decode]_pem.  Also added function
12181           silc_encode_pem_file to PEM encode with newlines ('\n') for
12182           saving into a file.
12183
12184         * SILC public keys are now encoded either PEM or binary.  Same
12185           option is for private keys as well.  By default private keys
12186           are binary encoded and public keys PEM encoded.  Silly HEX
12187           encoding were removed.
12188
12189         * Added into lib/silccrypt/silchash.[ch] silc_hash_fingerprint
12190           function to create fingerprints.
12191
12192         * Fixed a bug in SHA1; does not change the original data anymore.
12193
12194         * Partly implemented INFO command on client and server side.
12195           Fixed CLEAR command.  Changes to SERVER command; show current
12196           server(s) when giving command without arguments.  Added
12197           VERSION command to client.
12198
12199         * Added check to server that unregistered connections cannot
12200           execute commands (unless it is specificly allowed).
12201
12202 Thu Jul  6 18:12:24 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
12203
12204         * Fixed screen refresh.
12205
12206         * Fixed channel joining bug from client.  On some circumstances
12207           client tried to join to a channel it had already joined.
12208
12209         * Added public key verification process into client's protocol.c.
12210           The client now verifies the public key from user and saves
12211           it into ~./silc/serverkeys/ directory.
12212
12213           Added into: clientutil.[ch]: silc_client_verify_server_key.
12214
12215         * Changed SKE protocol's silc_ske_initiator_finish function
12216           to accept callback function that verifies the received public
12217           key.  Removed old silc_ske_verify_public_key function.
12218
12219 Wed Jul  5 19:19:02 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
12220
12221         * Added into silcpkcs[ch]: silc_pkcs_public_key[_data]_set and
12222           silc_pkcs_private_key[_data]_set.
12223
12224         * Made the password and public authentication more cleaner in
12225           server's protocol.c.
12226
12227         * Removed historic and obsolete protocol `channel_auth' from
12228           both client and server.
12229
12230         * Removed wrong way of sending command status messages from
12231           server to client in server's command.c.  The old way violated
12232           protocol specification.
12233
12234           Changes to silccore/silccommand.[ch]: removed
12235           silc_command_encode_status_payload -> not needed anymore,
12236           changed silc_command_encode_payload_va to accept extra
12237           argument on variable argument list.  The argument type must
12238           now be provided to the function.  Also, added new function:
12239           silc_command_encode_reply_payload_va which is same as
12240           normal command_encode_payload_va except command status type
12241           is provided as extra argument.
12242
12243 Tue Jul  4 18:26:39 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
12244
12245         * Added ~./silc directory handling.  The directory includes the
12246           public and private keys for the client.
12247
12248           Added silc_client_check_silc_dir, silc_client_create_identifier
12249           and silc_client_load_keys.
12250
12251         * Implemented SILC protocol compliant public key.  Added public
12252           and private key saving to and loading from files.
12253
12254           Added into silcpkcs.[ch]: silc_pkcs_encode_identifier,
12255           silc_pkcs_public_key_encode[_data], silc_pkcs_public_key_decode,
12256           silc_pkcs_private_key_encode[_data], silc_pkcs_private_key_decode,
12257           silc_pkcs_public_key_alloc, silc_pkcs_public_key_free,
12258           silc_pkcs_private_key_alloc and silc_pkcs_private_key_free.
12259
12260           Implemented: silc_pkcs_save_[public/private]_key[_data] and
12261           silc_pkcs_load_[public/private]_key.
12262
12263 Mon Jul  3 18:51:27 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
12264
12265         * Added silc_server_get_route (route.[ch]) to get connection
12266           data for the fastest route for given ID.
12267
12268         * Implemented INVITE command on client and server.  The command
12269           were re-defined in the SILC Protocol Specification and the
12270           implementation now complies with the specification.
12271
12272         * Implemented PING command on client and server.
12273
12274         * Implemented NAMES command on client and server.  The server side
12275           supports currently only normal server not router server yet.
12276           Some changes to NAMES definition in SILC protocol specification.
12277
12278 Sun Jul  2 18:23:01 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
12279
12280         * Implemented LEAVE command on client and server.
12281
12282         * Previously deprecated SILC_PACKET_FORWARDED flag is now in use
12283           again.  This change was made to the protocol as well.  Server
12284           should not violate the protocol specification anymore.
12285
12286 Fri Jun 30 14:03:26 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
12287
12288         * Added SOCKS4 and SOCKS5 support to SILC client.  SOCKS5
12289           was tested.  SOCKS4 was not but should work anyway.