updates.
[silc.git] / TODO
diff --git a/TODO b/TODO
index 3c2fefe45c1235e0c98eeee8556b1e32e042dd06..7e52a12a5aea3d05ab3ba58e2a2f68676c81b079 100644 (file)
--- a/TODO
+++ b/TODO
@@ -1,62 +1,27 @@
 TODO/bugs in Irssi SILC client
 ==============================
 
- o GETKEY server will save the serverkey to the same filename as the 
-   connected server and thus destroys the key.
-
o GETKEY server will show first, "there is no such nickname".
+ o Fix the silc_channels_join to parse the command like, with fe.
+   silc_parse_command_line, because currently it ignores all options,
+   including passphrase which makes autojoin impossible to +a channels.
  Other important options are ignored too.
 
  o Add local command to switch the channel's private key when channel has
    several private keys.  Currently sending channel messages with many
    keys is not possible because changing the key is not possible by the
    user.
 
- o JOINing to +a (requires passphrase to JOIN) does not work on autojoin.
-   Seems the passwords in the .silc/config has no effect.
-
- o Add local commands to list the current server and client public keys
-   that the user has.  And a local command to dump the contents of the
-   public key to the screen.  Something like LISTKEYS, SHOWKEY...
-
- o We should get rid of the clientconfig.[ch] in Irssi SILC and move the
-   cipher, hash, hmac and pkcs configuration to the Irssi SILC's config
-   file.
-
- o Add PERL scripting support from Irssi CVS.
-
- o Extend the /HELP command to support sub commands or something.  So
-   that user can say /help set mutual_authentication they would get
-   help of the mutual_authentication setting.
-
- o Set different kind of settings, like, /set mutual_authentication,
-   /set key_exchange_timeout, /set conn_auth_timeout etc etc.
+ o /cumode for unknown nick does not give any error message.
 
 
 TODO/bugs In SILC Client Library
 ================================
 
- o Remove the assert from silc_client_file_send.
-
- o Having @ in nickname will crash the client after changing the nickname
-   back without the @.
-
  o The PRIVATE_MESSAGE_KEY packet is not handled (it is implemented 
    though).  This should be added and perhaps new client operation
    should be added to notify application that it was received and
    set the key only if application wishes to set (accept the key) it.
 
- o should /nick nick and /nick Nick cause the Nick to be Nick@host becase
-   it used to be nick??
-
- o When changing own nickname and there exists a same nickname the library
-   can give the client now nickname in format nick@host.  This is new
-   behaviour and maybe should be removed.  The changer should always
-   get the one it wants and not have the formatted nickname.
-
- o Remove the command destructor all together from the client, it is
-   not needed and its usage is buggy when the context is registered
-   to multiple pending commands.
-
  o Additions to do after protocol version 1.1:
 
        o Fix the NICK_CHANGE notify handling not to create new entry
@@ -70,17 +35,24 @@ TODO/bugs In SILC Client Library
 TODO/bugs In SILC Server
 ========================
 
- o removing other's modes on channel seems to be possible due to some
-   cumode bug.
+ o Configuration file additions:
 
- o Topic notifications seem to go double times occasionally to a channel.
+       o Add incoming connection frequency, incoming connection frequency
+         for single IP address, key exchange frequency, key exchange
+         frequency for single IP. Add also frequency base.
 
o Add hashed passwords to silcd.conf file.
      o Add hashed passwords to config file.
 
- o Backup router related issues
+       o Add rehashing support.
 
-       o Channel user mode changes are notified unnecessarely when
-         switching to backup router on router crash.
+ o If server send CUMODE_CHANGE notify (like setting founder) to router
+   and router does not have founder on channel (founder is left or there's
+   no founder on channel at all), the router will accept the server's
+   founder mode change, even though it perhaps should not do that.
+
+ o The router should check for validity of received notify packets from
+   servers (after all buggy servers may send notify that is actually
+   something that should have not been sent).
 
  o Add a timeout to handling incoming JOIN commands.  It should be 
    enforced that JOIN command is executed only once in a second or two
@@ -89,20 +61,12 @@ TODO/bugs In SILC Server
    each JOIN command will create and distribute the new channel key
    to everybody on the channel.
 
- o New configuration file format must be added.  The new one will be
-   done using the dotconf config library (lib/dotconf).  The following
-   tasks relates closely to this as well and must be done at the same time
-   when adding the new config file format:
-
-       o Server says that it is able to listen on multiple ports but
-         currently that is bogus.  It can, but internals are for single
-         server.
+ o Backup router related issues
 
-       o Protocol execution timeouts are hard coded, should be
-         configurable.
+       o Channel user mode changes are notified unnecessarely when
+         switching to backup router on router crash.
 
-       o IP address fields in configuration file should accept mask
-         format as well, IP/MASK, and not just plain IP.
+ o Lots of statistics updating is missing around the server.
 
  o If client's public key is saved in the server (and doing public key
    authentication) then the hostname and the username information could
@@ -119,6 +83,34 @@ TODO/bugs In SILC Libraries
  o Rewrite the lib/silcsim/silcsim.h.  The SilcSimContext should be
    private and silc_sim_alloc should take necessary arguments.
 
+ o SILC RNG does not implement random seed files, and they should be
+   implemented.
+
+ o The SilcSocketConnection in the SFTP interface is actually redundant
+   and should perhaps be removed.  The application can save it in the
+   context it provides, which is delivered by SFTP libary to all 
+   callback functions.
+
+
+TODO in Toolkit Documentation
+=============================
+
+Stuff that needs to be done in order to complete the Tooolkit Reference
+Manual.
+
+ o Lots of ROBOdoc header formatting is undone in lib/silcutil, and 
+   lib/silccrypt.
+
+ o Write "Programming with Toolkit" document, describing how to build
+   Toolkit, how the build system works, where is everything, how
+   new (external) projects can be glued into Toolkit (use irssi as an
+   example), and how external projects can use Toolkit without gluing into
+   it (how to link etc), debugging, architecture, types, etc.
+
+ o Write "Platform Implementations" document to describe what platforms
+   Toolkit support, what has been implemented, what has not been, what
+   wors differently etc.
+
 
 TODO in SILC Protocol
 =====================
@@ -177,6 +169,23 @@ describe new stuff to be added to protocol versions 1.x.
     payload MAC and not alone by packet MAC.  To be included in protocol 
     version 1.1.
 
+ 8. Remove the administrative commands from the protocol all together.
+    It does not make sense for the protocol to define how a server is
+    reconnected or shutdown, since they are implementation and 
+    configuration issues.  Besides protocol provides only limited set of
+    administrative commands and cannot define all that one could imagine.
+    To be included in protocol version 1.1.
+
+ 9. Add SILC_MESAGE_FLAG_REPLY for being other side to the
+    SILC_MESSAGE_FLAG_REQUEST.  Add generic SILC_MESSAGE_FLAG_DATA, which
+    can include generic payload, which can include generic data.  The
+    payload definition is left out for now.  To be included in protocol
+    version 1.1.
+
+ 10. Check command reply error status types in various commands,
+     specifically NO_FOPRIV is missing from many commands.  To be 
+     included in protocol version 1.1.
+
 
 TODO After 1.0
 ==============
@@ -268,6 +277,22 @@ least could be done.
          and thus not require any memory allocation.  Same will happen
          with silc_id_payload_* functions.
 
+       o Remove the `truelen' field from SilcBuffer as it is entirely
+         redundant since we can get the true length of the buffer by
+         doing buffer->end - buffer->header.  Add SILC_BUFFER_TRUELEN
+         macro instead.  Consider also removing `len' field too since
+         it effectively is buffer->tail - buffer->data, and adding
+         SILC_BUFFER_LEN macro can do the same.  These would save
+         totally 8 bytes of memory per buffer.
+
+         Add also perhaps function silc_buffer_alloc_size that would
+         effectively do: 
+
+               return silc_buffer_pull_tail(silc_buffer_alloc(size),
+                                            size);
+
+         to not require the user to give the pull_tail anymore.
+
  o Optimizations in Server
 
        o Remove the big switch statement from the function 
@@ -287,6 +312,18 @@ least could be done.
          should be analyzed too how slow the task registering process
          actually is, and find out ways to optimize it.
 
+       o The SERVER_SIGNOFF notify handing is not optimal, because it'll
+         cause sending of multiple SIGNOFF notify's instead of the one
+         SERVER_SIGNOFF notify that the server received.  This should be
+         optimized so that the only SERVER_SIGNOFF is sent and not
+         SIGNOFF of notify at all (using SIGNOFF takes the idea about
+         SERVER_SIGNOFF away entirely).
+
+ o Add SilcAsyncOperation to utility library.  Any function that takes
+   callback as an argument must return SilcAsyncOperation.
+
+ o Add DSS support.
+
  o Cipher optimizations (asm, that this) at least for i386 would be nice.
 
  o Add builtin SOCKS and HTTP Proxy support, well the SOCKS at least.