updates.
[silc.git] / TODO
diff --git a/TODO b/TODO
index ca95f2e1b3b051e1666f304a6c664b9d2aa41da4..7af043baa6ad6314d21a3fa5b9d829fccf1d863f 100644 (file)
--- a/TODO
+++ b/TODO
@@ -1,8 +1,6 @@
 TODO/bugs in Irssi SILC client
 ==============================
 
- o /key msg * list crashes the client
-
  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
@@ -15,14 +13,6 @@ TODO/bugs in Irssi SILC client
    that the user has.  And a local command to dump the contents of the
    public key to the screen.  Something like LISTKEYS, SHOWKEY...
 
- o The QUIT command should wait for server's disconnection (at least for
-   a while) before exiting the application.
-
- o The JOIN command's HELP is generated from Irssi IRCs JOIN help and
-   the syntax is not same in SILC.  This must be fixed.  Most likely
-   we must forget the Irssi's JOIN command and mimic it to get our
-   required syntax for it too.
-
  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.
@@ -40,29 +30,23 @@ TODO/bugs in Irssi SILC client
 TODO/bugs In SILC Client Library
 ================================
 
- o JOIN command's argument handling is buggy.  See the XXX in the code.
+ 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.
 
 
 TODO/bugs In SILC Server
 ========================
 
- o After backup resuming protocol some of the server's SilcIDListData
-   on primary that came back online are NULL. Seems actually that the
-   udpate_client_by_server does not work since the client->router, and
-   the client->router->connection->user_data are not same, and they
-   should be.
-
- o Server signoff notifys does not go to normal servers from routers.
-
- o Channel user mode changes are notified unnecessarely when switching
-   to backup router on router crash.
+ o If auto-reconnecting to router and EOF is received during the
+   connecting phase the server will not try to auto-reconnect anymore
+   after that.  Fix to auto-reconnect.
 
- o Change the sever to connect to another server from low ports (706)
-   and not from high ports.  Currently we cannot do incoming connection
-   checking by remote port because the port is not fixed.
+ o Backup router related issues
 
- o Announcements are incomplete: channel topics are not announced,
-   user modes (UMODE) are not announced.
+       o Channel user mode changes are notified unnecessarely when
+         switching to backup router on router crash.
 
  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
@@ -71,35 +55,6 @@ TODO/bugs In SILC Server
    each JOIN command will create and distribute the new channel key
    to everybody on the channel.
 
- o Optimize the WHOIS and IDENTIFY commands to somehow check whether the
-   requested clients are on some channel that the server knows about.  If
-   this is the case then the request is not needed to be forwarded to the
-   router.  One specific optimization could be done with JOIN command.
-   If the previous command to the WHOIS and IDENTIFY commands are JOIN
-   command (from the client) it can be expected (though it must be
-   verified) that the client is resolving the users on the channel it just
-   joined.  If server has done this once there is really no reason to
-   resolve it twice (from the router), it can reply directly back with
-   the information it knows.  This is because the server would (will) 
-   receive notifications from the router for users that are on a local
-   channel.
-
-   The same is with whowas command.  Actually with all these commands
-   it should be checked also whether the requested information is local.
-   If it is, there is no reason to send it to the router, since the server
-   knows it best.
-
- o Add support for sending the LIST command to primary router on normal
-   server to receive all the created channels.  Currently the command
-   returns only the channels the server knows about.  The protocol spec
-   does not prohibit of sending the LIST to the router.
-
- o Incomplete IPv6 support:
-
-       o silcd/serverid.c and its routines supports only IPv4.
-
- o Add perhaps /var/run/silcd.pid for PID information for the server.
-
  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
@@ -115,60 +70,71 @@ TODO/bugs In SILC Server
        o IP address fields in configuration file should accept mask
          format as well, IP/MASK, and not just plain IP.
 
-        o Connection classes should be actually implemented in
-         serverconfig.c.  They can be defined but they are totally
-         ignored currently.  And they should be redefined also.
+ o If client's public key is saved in the server (and doing public key
+   authentication) then the hostname and the username information could
+   be taken from the public key.  Should be a configuration option!
 
 
 TODO/bugs In SILC Libraries
 ===========================
 
- o Compression routines are missing.  The protocol supports packet
-   compression thus it must be implemented.  SILC Comp API must be
-   defined.  zlib package is already included into the lib dir (in CVS,
-   not in distribution), but it is not used yet, and it requires some
-   tweaking on the Makefiles (we want static lib not shared).
-
- o All payload parsing (decoding) functions should take unsigned char *
-   and uint32 as data and data length as arguments.  Now some of the
-   routines do already that but most of the routines use SilcBuffer.
-   The SilcBuffer ones should be removed since buf->data and buf->len
-   is more convenient to use.  These are currently only cosmetic changes
-   but at some point must be done to make the payload interfaces
-   consistent.
+ o WIN32 silc_net_create_connection_async does not work the same way
+   than on Unix.  Do it with threads on WIN32.  The function works but
+   is not actually async currently.
 
- o Incomplete IPv6 support:
+ o Rewrite the lib/silcsim/silcsim.h.  The SilcSimContext should be
+   private and silc_sim_alloc should take necessary arguments.
 
-       o All network routines in lib/silcutil/silcnet.[ch] does not
-         support IPv6.
-       o silc_id_render supports only IPv4 based ID's in the file
-         lib/silcutil/silcutil.c.
 
- o Add builtin SOCKS and HTTP Proxy support, well the SOCKS at least.
-   SILC currently supports SOCKS4 and SOCKS5 but it needs to be compiled
-   in separately.
-
-
-TODO/Bugs in native WIN32 support (libraries)
-=============================================
-
- o silc_net_create_connection_async does not work the same way than on
-   Unix.  Do it with threads on WIN32.  The function works but is not
-   actually async currently.
-
-
-TODO In SILC Protocol
+TODO in SILC Protocol
 =====================
 
- o If channel founder mode is set and the invite mode is set on channel
-   then the founder should be added to the list automatically so that
-   if the founder signoff's it will be able join again to the invite only
-   channel wihtout being invited.
+ o Add "request parameters" or similar to the WHOIS command, which can
+   be used to request various parameters (something not returned by
+   standard WHOIS command) about clients (info that could be fetched
+   even from clients).  Additional specification (or appendix) should 
+   be done to define the payload and the parameters.  It could be used
+   to make the WHOIS command support various search conditions as well.
+   This would be the way to extend the WHOIS command to support various
+   new features without always making the command incompatible to previous
+   version.  To be included in protocol version 1.1.
+
+ o Re-define the Status Payload: it is now 16 bits, split it into two
+   8 bits fields.  First field includes status types from 0 - 9 and
+   10 - n *if* it is not an list of errors.  If it is list of errors then
+   the first field includes 1, 2 and/or 3, and the second field includes
+   the error status 10 - n.  This way it is possible to send multiple
+   errors (list of errors) and we have a way to tell the receiver that
+   there will be other errors as well.  The second field is used only
+   if there is list of errors.  If normal status, or normal (single)
+   error status the second field is set to zero, and must be ignored.
+   Hence, the status works same way as now except for list of errors.
+   To be included in protocol version 1.1.
+
+ o Define that WHOIS and IDENTIFY commands must send list of errors
+   if multiple Client ID (or Channel ID and Server ID for IDENTIFY) was
+   requested and was not found.  Each unfound entry must cause an error
+   command reply to the sender.  Also define that errors must be sent
+   *after* sending successfully found entries (this way receiver may
+   ignore them).  To be included in protocol version 1.1.
 
 
 TODO After 1.0
 ==============
 
+ o Compression routines are missing.  The protocol supports packet
+   compression thus it must be implemented.  SILC Zip API must be
+   defined.  zlib package is already included into the lib dir (in CVS,
+   not in distribution), but it is not used yet, and it requires some
+   tweaking on the Makefiles (we want static lib not shared).
+
+ o Implement the defined SilcDH API.  The definition is in
+   lib/silccrypt/silcdh.h.
+
+ o Add builtin SOCKS and HTTP Proxy support, well the SOCKS at least.
+   SILC currently supports SOCKS4 and SOCKS5 but it needs to be compiled
+   in separately.
+
  o X.509 certificate support.  SILC protocol supports certificates and
    it would be great to have support for them.  This is a big task as
    support has to be made for ASN.1 as well.  I've looked into OpenSSL 
@@ -184,10 +150,11 @@ TODO After 1.0
    to start writing one myself.  Anyhow, the OpenSSL X.509 lib should
    be checked.
 
-   Other package that should be checked is the NSS's X509 library.
+   Other package that should be checked is the NSS's X509 library,
+   which I like more over OpenSSL package.
+
+ o SSH2 public keys support.
 
- o SSH2 public keys support.  Maybe - not really needed but could be
-   nice as SSH is widely used all over the place.  SILC Protocol 
-   supports SSH2 public keys.
+ o OpenPGP certificate support.
 
  o Cipher optimizations (asm, that this) at least for i386 would be nice.