fixed crash when bogus payload (auth_data == NULL) was received.
[silc.git] / TODO-1.0
index 2bd59736811e79e5a9d62863f3ce5f2e62b77c86..afda54a93b5b1cba192eff44076874341fab1851 100644 (file)
--- a/TODO-1.0
+++ b/TODO-1.0
@@ -67,7 +67,7 @@ least could be done.
 
          These naturally cause the overal memory consumption to grow
          but would take away many allocations that can be done several
-         times in a second (see also ~/silcpacket).
+         times in a second.
 
        o Move the actual file descriptor task callback (the callback that
          handles the incoming data, outgoing data etc, that is implemnted
@@ -90,6 +90,23 @@ least could be done.
          SILC_BUFFER_LEN macro can do the same.  These would save
          totally 8 bytes of memory per buffer.
 
+       o Scheduler can be optimized for FD tasks by changing the fd_queue
+         to SilcHashTable instead of using linked list.  We need to do
+         one-to-one mapping of FD to task and hash table is more efficient
+         for this usage.
+
+         Also redefine the silc_select to perhaps return a separate
+         structure of the events that actually occurred, instead of
+         returning the events in the fd_list which is then traversed
+         in the generic code to find the changed events.  This can be
+         made faster by having own struct which includes only the
+         changed events, thus the tarversing is faster since the whole
+         fd_list is not traversed anymore (it is still traversed in the
+         silc_select but at least it removes one extra tarversing later
+         for the same list).
+
+         Other task queues should be changed to use SilcList.
+
  o Optimizations in Server
 
        o Remove the big switch statement from the function 
@@ -122,20 +139,18 @@ least could be done.
 
  o Rewrite SilcProtocol to be SilcFSM (see ~/silcfsm).
 
- o Do some scheduler optimizations and interface changes (see 
-   ~/silcschedule).
-
- o Change the lib/silccore/silcpacket.[ch] interfaces (see ~/silcpacket).
-
- o Add abstract SilcStream and SilcSocketStream (see ~/silcstream).
-
- o Change some of the SILC Net interfaces (see ~/silcnet).
+ o Change SILC_TASK_CALLBACK to non-static, and remove the macro
+   SILC_TASK_CALLBACK_GLOBAL.
 
  o Add DSS support.
 
  o SILC RNG does not implement random seed files, and they should be
    implemented.
 
+ o Add SILC scheduler's internal routines into a table of implementation
+   function pointers, that the generic code then takes as extern from
+   implementation.  These are the silc_schedule_internal_* routines.
+
  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.