updates.
[silc.git] / TODO
diff --git a/TODO b/TODO
index cf5768f04856d31df463d9817094502db83af791..2d35cbdf776bbca04be194ff67bca2baa82f476f 100644 (file)
--- a/TODO
+++ b/TODO
@@ -1,9 +1,6 @@
 TODO/bugs in Irssi SILC client
 ==============================
 
- o Setting /away prints server/router operator modes as well.
-   Print modes that was just set only.
-
  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
@@ -33,21 +30,38 @@ TODO/bugs in Irssi SILC client
 TODO/bugs In SILC Client Library
 ================================
 
- o N/A
+ 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
+         for the changed client, but take the nickname from the notify
+         (removes need for resolving as well).  Protocol TODO entry 3.
+
+       o Add support for list of errors in command replies.  Protocol
+         TODO entry 1.
 
 
 TODO/bugs In SILC Server
 ========================
 
- o The LIST command reply should empty the global list because
-   it is possible there stay channels that does not exist anymore.
-   Empty it and put channels that server does not know about to 
-   global list.
-
- o Make the silc_server_command_pending_error_check function to
-   take all arguments it received and put them to the reply it is 
-   sending.  Otherwise for example WHOIS on normal server for bogus
-   nickname does not print anything in the client.
+ o strerror messages from premature EOF's to signoff messages.
+   (add perhaps a socket error thingy to SilcSocketConnection).
 
  o Backup router related issues
 
@@ -76,10 +90,6 @@ 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!
@@ -88,10 +98,74 @@ TODO/bugs In SILC Server
 TODO/bugs In SILC Libraries
 ===========================
 
+ o make install copies the symblic links from lib/silcsim/ and not
+   modules.
+
  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 Rewrite the lib/silcsim/silcsim.h.  The SilcSimContext should be
+   private and silc_sim_alloc should take necessary arguments.
+
+
+TODO in SILC Protocol
+=====================
+
+Current protocol version is 1.0.  However, it is far from being perfect,
+and needs to include additional features.  Following protocol TODO entries
+describe new stuff to be added to protocol versions 1.x.
+
+ 1. 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.
+
+ 2. 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.
+
+ 3. Define the NICK_CHANGE notify to send the changed nickname as a new
+    third argument.  This will make the NICK_CHANGE notify handling easier
+    in the receiver's end (client primarily) since it removes the
+    requirement that receiver must resolve (using IDENTIFY or WHOIS) the
+    new Client ID received in the notify (because of the new nickname is
+    unknown).  To be included in protocol version 1.1.
+
+ 4. 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.
+
+ 5. Inviting and banning by public key should be made possible.  To be
+    included in protocol version 1.x.
+
+ 6. Add perhaps SILENCE_USERS, SILENCE_OPERS channel user modes which
+    can be used to silence (moderate) normal users and opers (this set
+    only by founder).  To be included in protocol version 1.1.
+
+ 7. Channel Message Payload needs slight redesining to include the IV
+    field to the MAC generation of the payload.  It is authenticated
+    by the packet's MAC but not by the payload's MAC.  Since the IV
+    belongs to the payload, its integrity should be protected by the
+    payload MAC and not alone by packet MAC.  To be included in protocol 
+    version 1.1.
+
 
 TODO After 1.0
 ==============