updates
[silc.git] / CHANGES
1 Fri Oct  5 21:16:28 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
2
3         * Added support for multiple nicknames on same channel.  [n] is
4           added locally to the nickname if there are more than one same
5           nicknames on the channel.
6
7         * Server now sends all nicknames that matched WHOIS request.
8           Client also shows the list received from server.
9
10         * Added TOPIC command to client side.  User can now set and show
11           current topic on channel.
12
13         * Added MOTD command to client and server.  Also, server sends the
14           motd when client connects to the server.
15
16         * Changed version strings to comply ISO 8601.
17
18 Thu Oct  4 23:29:06 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
19
20         * Fixed protocol error handling in client library.  It should now
21           cope even if the SKE fails for some reason.
22
23         * Made new protocol specification drafts for submitting to IETF.
24
25         * Implemented TOPIC command to server in silcd/command.c.
26
27         * Added two new notify types into lib/silccore/silcnotify.h:
28           SILC_NOTIFY_TYPE_NICK_CHANGE and SILC_NOTIFY_TYPE_TOPIC_SET to
29           notify nickname change and topic setting/change on a channel.
30
31         * API change of command_reply operation in client library.  The
32           application gets now the status type received from server as well.
33
34 Sat Sep 30 16:57:42 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
35
36         * Removed the function just added to lib/silcutil/silcschedule.[ch].
37
38         * Cras fixed and optimized the packet handling even further and
39           it should work now.  Minor change to the prototype of function
40           silc_packet_receive_process in lib/silccore/silcpacket.[ch].
41
42 Sat Sep 30 08:48:47 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
43
44         * Added new function into lib/silcutil/silcschedule.[ch]:
45           silc_schedule_with_fd to select() a specified fd.  The function
46           returns after timeout expires or data arrives or goes.  The
47           function is used by packet routines to wait that all data is
48           received from network.
49
50         * Fixed data reading from network in lib/silccore/silcpacket.c.
51           The code now assures that all data is read from the fd and then
52           continues packet processing.  This was a bug fix since the code
53           used to drop some data in some circumstances.
54
55         * Added new function into lib/silcclient/client.[ch]:
56           silc_client_start_key_exchange to start key exchange after
57           connection has been established to server.  The code internally
58           now uses this funtion but its main purpose was to provide it
59           for applications that perform their own connecting.  After
60           application has created a connection it merely calls this
61           function to start the key exchange between client and server.
62           The library takes care of everything else after that.
63
64           Updated also lib/silcclient/README to explain the usage of
65           this new function.
66
67         * Do not send to application information that connection has
68           been established.  Application gets notified it by connect
69           operation anyway.
70
71 Thu Sep 28 23:40:19 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
72
73         * Applied cras's patch to add silc_schedule_one function.  The
74           function runs scheduler once and returns.
75
76         * Fixed the scheduler after cras messed it up.  The timeout
77           handling works now as it's supposed to work.
78
79         * Added into lib/silccore/ silcnotify.h to include notify
80           message types support.  Changed silc_server_send_notify*
81           functions, in server.[ch], to support those new notify types.
82           Added the support for the notify types into client library,
83           as well.  Added new notify client operation into ops.h in
84           lib/silcclient/.
85
86         * Changed silc_server_packet_send_to_channel to send normal
87           packets instead of just channel message packets.  The function
88           is now used to send the notify packets to channels.  It is not
89           used to send channel message packets anymore, as server never
90           sends them anymore.
91
92         * Added explicit casting into lib/silcutil/silcbuffmt.c to few
93           va_arg()s as it seems to require it nowadays.  I guess, if SILC
94           is compiled with older va_arg() the new code should work anyway.
95
96 Wed Sep 13 18:10:14 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
97
98         * Splitted core library.  Core library (lib/silccore) includes
99           now only SILC protocol specific core (and common) components.
100           Created new utility library (lib/silcutil) that includes more
101           generic purpose stuff.  The stuff for util library was taken
102           from the old core library.  This was minor and easy split.
103
104         * Created SILC Client Library (lib/silcclient) that includes
105           implementation of the SILC client without user interface.  This
106           was major move from silc/ directory.  The code has been changed
107           so that it is transparent towards the user interface.  The
108           silc/ directory includes now the same user interface as before
109           and it uses the new client library.  Read lib/silcclient/README.
110           Basicly, the client library performs everything else related
111           to SILC except user interface handling.  Also, configuration
112           files are considered to be part of user interface and library
113           does not handle them.
114
115           This change also changed a lot of structures, function naming etc.
116           Most important change was that SilcClientWindow object was
117           renamed to SilcClientConnection in the client library.  Created
118           also new file lib/silcclient/ops.h.  Also added new files
119           silc/local_command.[ch] and silc/client_ops.[ch].
120
121           All these changes were made to make it easier for user interface
122           designers to create what ever user interface for the SILC client
123           they want.
124
125           It is also expected that the server will be moved to lib
126           directory as well and SILC Server Library will be created;
127           sometimes in the future.
128
129         * Removed Local commands from lib/silccore/silccommand.h as
130           they are application specific and new client library does not
131           handle any of those anymore.
132
133         * Several functions moved to lib/silcutil/silcutilc.[ch] from
134           old client implementation in silc/.
135
136         * Added support for callback functions in SILC_LOG_* macros.
137           Application can now set its own callbacks that will be called
138           instead of using the default functions that will always print
139           the debug messages to stderr (or stdout).  Also, debugging can
140           now be disabled by setting silc_debug to FALSE and re-enabled by
141           setting it to TRUE.  Note, that logging will still work even
142           if debugging is disabled.
143
144           New functions in lib/silcutil/silclog.[ch]: silc_log_set_callbacks,
145           silc_log_reset_callbacks, silc_log_set_debug_callbacks and
146           silc_log_reset_debug_callbacks.
147
148         * To enable debugging in silc client one must give now -d
149           option on command line.
150
151         * Changed silc_schedule_init to automatically allocate task queues
152           if they are not allocated before calling it.
153
154 Thu Sep  7 10:49:33 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
155
156         * Added GMP 3.1 into math library.
157
158 Sun Aug 20 21:27:26 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
159
160         * Added SILC_PACKET_REMOVE_CHANNEL_USER to remove a client from
161           a channel in SILC network.  The packet is used by servers and
162           routers to notify other routers that user has left a channel.
163           This little feature was missing until now.  Added the feature
164           to protocol specification as well.
165
166           Added functions: silc_server_send_remove_channel_user and
167           silc_server_remove_channel_user into server.[ch].
168
169         * Added SILC_PACKET_REKEY and SILC_PACKET_REKEY_DONE into
170           lib/silccore/silcpacket.h.  However, they are not implemented
171           yet.
172
173 Sat Aug 19 23:04:16 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
174
175         * Fixed joining to a channel and sending channel messages
176           between server and router.  The channel message sending should
177           now work inside a cell.
178
179 Tue Jul 25 20:46:13 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
180
181         * Fixed the private message sending between server and router.
182           The private message sending should now work inside a cell.
183
184         * Added silc_server_replace_id into server.[ch] to replace
185           existing ID in the SILC network.
186
187         * Added silc_idlist_find_server_by, silc_idlist_replace_client_id
188           and silc_idlist_replace_server_id into idlist.[ch] in server.
189
190 Mon Jul 24 18:33:31 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
191
192         * Fixed the server to server connections.  Server can again now
193           connect to router.  Router to router connections probably does
194           not work just yet.
195
196 Thu Jul 20 13:15:01 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
197
198         * Added dynamic protocol registering support.  Now protocols can
199           registered and unregistered on the fly.  Patch by cras.
200
201 Wed Jul 19 19:08:46 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
202
203         * Added lib/contrib directory to hold routines that some platforms
204           don't have but are needed by SILC.
205
206         * Added getopt.c, getopt1.c and getopt.h from GNU C library
207           into lin/contrib to provide getopt() and getopt_long() for
208           those who don't have it.
209
210 Tue Jul 18 20:41:20 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
211
212         * Added AWAY command to client.  When away message is set and
213           client receives a private message packet the client automatically
214           replies to the sender with the away message.
215
216         * Fixed a bug in lib/silcmath/mpbin.c: silc_mp_mp2bin.  This
217           bug seemed to be the cause of recent problems when compiling
218           with gcc-2.95.
219
220         * Added version detection support to SKE protocol specification
221           and added the new changes to the SKE implementation as well.
222           There were other minor changes in the SKE protocol as well.
223
224           Many changes in lib/silcske/silcske.[ch] and in
225           lib/silcske/payload.[ch].
226
227         * Added ^U functionality, clear input line.  Patch from cras.
228
229 Mon Jul 17 23:33:26 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
230
231         * Mainly small bugfixes on core library.  Fixed some debugging
232           logging and buffer overflow in silclog.c.
233
234         * Updated config.sub and config.guess on the distribution tree.
235
236 Sat Jul 15 15:33:48 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
237
238         * Added command lagging support in server. Client may execute
239           commands now only once in two seconds.
240
241 Thu Jul 13 22:10:21 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
242
243         * Optimized packet reception. MAC computation and checking is now
244           also more optimized.  A lot previously duplicated code is now
245           used as generic by both client and server.
246
247         * Fixed key pair generation in clientutil.c
248
249 Wed Jul 12 18:28:07 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
250
251         * Added into lib/silccore/silcbufutil.[ch] new function;
252           silc_buffer_realloc.
253
254         * Moved generic packet sending/encryption functions to 
255           lib/silccore/silcpacket.[ch] from client and server.  Some
256           rewriting of the functions.
257
258         * Moved all generic packet reception/decryption functions to
259           lib/silccore/silcpacket.[ch] from client and server.  The
260           packet processing is now much cleaner in both client and server.
261           These were major changes in both client and server.
262
263         * Created many common functions in server to do packet sending.
264           Previously code were duplicated a lot, this has been removed
265           with these changes.
266
267 Tue Jul 11 20:27:26 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
268
269         * Rewrote major parts of the ID cache system.  Don't know 
270           whether it is better now or not but at least the API is more
271           cleaner now.
272
273         * Major rewrite on ID cache stuff on client because of the ID
274           cache API changes.  Added idlist.c to client.
275
276         * Also major rewrite on ID cache stuff on server as well.
277           Major rewrite of idlist.[ch]. SilcXXXList's are now named
278           SilcXXXEntry's.  We won't keep anymore idlist specific pointers
279           in hand, instead they are all put into the ID cache system now.
280           All server_idlist_* routines uses ID cache now instead of
281           traversing its own lists (those lists does not exist anymore).
282           SilcIDList though still exists.  Also, SilcXXXEntry's are
283           now pointers.
284
285 Sun Jul  9 15:19:24 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
286
287         * Finally made the SKE implementation compliant to the protocol
288           specification.  All mp integers are now binary encoded as
289           opposed being HEX encoded.
290
291         * Added lib/silcmath/mpbin.[ch].  Encoding mp intergers to and
292           from binary data.
293
294         * Added into lib/silccore/silcutil.[ch] PEM encoding/decoding
295           functions: silc_[encode/decode]_pem.  Also added function
296           silc_encode_pem_file to PEM encode with newlines ('\n') for
297           saving into a file.
298
299         * SILC public keys are now encoded either PEM or binary.  Same
300           option is for private keys as well.  By default private keys
301           are binary encoded and public keys PEM encoded.  Silly HEX
302           encoding were removed.
303
304         * Added into lib/silccrypt/silchash.[ch] silc_hash_fingerprint
305           function to create fingerprints.
306
307         * Fixed a bug in SHA1; does not change the original data anymore.
308
309         * Partly implemented INFO command on client and server side.
310           Fixed CLEAR command.  Changes to SERVER command; show current
311           server(s) when giving command without arguments.  Added
312           VERSION command to client.
313
314         * Added check to server that unregistered connections cannot
315           execute commands (unless it is specificly allowed).
316
317 Thu Jul  6 18:12:24 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
318
319         * Fixed screen refresh.
320
321         * Fixed channel joining bug from client.  On some circumstances
322           client tried to join to a channel it had already joined.
323
324         * Added public key verification process into client's protocol.c.
325           The client now verifies the public key from user and saves
326           it into ~./silc/serverkeys/ directory. 
327
328           Added into: clientutil.[ch]: silc_client_verify_server_key.
329
330         * Changed SKE protocol's silc_ske_initiator_finish function
331           to accept callback function that verifies the received public
332           key.  Removed old silc_ske_verify_public_key function.
333
334 Wed Jul  5 19:19:02 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
335
336         * Added into silcpkcs[ch]: silc_pkcs_public_key[_data]_set and
337           silc_pkcs_private_key[_data]_set.
338
339         * Made the password and public authentication more cleaner in
340           server's protocol.c.
341
342         * Removed historic and obsolete protocol `channel_auth' from
343           both client and server.
344
345         * Removed wrong way of sending command status messages from
346           server to client in server's command.c.  The old way violated
347           protocol specification.  
348
349           Changes to silccore/silccommand.[ch]: removed
350           silc_command_encode_status_payload -> not needed anymore,
351           changed silc_command_encode_payload_va to accept extra
352           argument on variable argument list.  The argument type must
353           now be provided to the function.  Also, added new function:
354           silc_command_encode_reply_payload_va which is same as
355           normal command_encode_payload_va except command status type
356           is provided as extra argument.
357
358 Tue Jul  4 18:26:39 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
359
360         * Added ~./silc directory handling.  The directory includes the
361           public and private keys for the client.
362
363           Added silc_client_check_silc_dir, silc_client_create_identifier
364           and silc_client_load_keys.
365
366         * Implemented SILC protocol compliant public key.  Added public
367           and private key saving to and loading from files.
368
369           Added into silcpkcs.[ch]: silc_pkcs_encode_identifier,
370           silc_pkcs_public_key_encode[_data], silc_pkcs_public_key_decode,
371           silc_pkcs_private_key_encode[_data], silc_pkcs_private_key_decode,
372           silc_pkcs_public_key_alloc, silc_pkcs_public_key_free,
373           silc_pkcs_private_key_alloc and silc_pkcs_private_key_free.
374
375           Implemented: silc_pkcs_save_[public/private]_key[_data] and
376           silc_pkcs_load_[public/private]_key.
377
378 Mon Jul  3 18:51:27 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
379
380         * Added silc_server_get_route (route.[ch]) to get connection
381           data for the fastest route for given ID.
382
383         * Implemented INVITE command on client and server.  The command
384           were re-defined in the SILC Protocol Specification and the
385           implementation now complies with the specification.
386
387         * Implemented PING command on client and server.
388
389         * Implemented NAMES command on client and server.  The server side
390           supports currently only normal server not router server yet.
391           Some changes to NAMES definition in SILC protocol specification.
392
393 Sun Jul  2 18:23:01 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
394
395         * Implemented LEAVE command on client and server.
396
397         * Previously deprecated SILC_PACKET_FORWARDED flag is now in use 
398           again.  This change was made to the protocol as well.  Server
399           should not violate the protocol specification anymore.
400
401 Fri Jun 30 14:03:26 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
402
403         * Added SOCKS4 and SOCKS5 support to SILC client.  SOCKS5
404           was tested.  SOCKS4 was not but should work anyway.