[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[minion-cvs] Configurable, smart retry logic; lots of refactoring; m...



Update of /home/minion/cvsroot/src/minion
In directory moria.mit.edu:/tmp/cvs-serv3319

Modified Files:
	TODO 
Log Message:
Configurable, smart retry logic; lots of refactoring; more tests.

mixminiond.conf, ServerQueue, Modules, ServerMain, test:
- Add more sophisticated, more configurable retry logic

Modules, ServerQueue, ServerMain, test:
- Refactor queueDeliveryMessage to not have a bogus 'addr' argument.

ServerMain:
- Change OutgoingQueue to contain instances of RelayedPacket, not 2-tuples of
  (IPv4Info, Packet).

ServerQueue:
- Remove dead code

test:
- Test payloads for drop messages.
- Test retry logic on server queues.
- Tests for DeliveryPacket methods
- Tests for connection padding and key renegotiation
- Use new queueDeliveryMessage interface
- Fix bug that generated server descs of the form "5 days days"



Index: TODO
===================================================================
RCS file: /home/minion/cvsroot/src/minion/TODO,v
retrieving revision 1.64
retrieving revision 1.65
diff -u -d -r1.64 -r1.65
--- TODO	12 Jan 2003 04:27:19 -0000	1.64
+++ TODO	13 Jan 2003 06:35:52 -0000	1.65
@@ -47,18 +47,20 @@
                 o Make packet processing happen in a separate thread. 
                 o Move message decoding into packet handler thread.
                 - Document
-                . Refactor until sane -- possibly along with
+                o Refactor until sane -- possibly along with
                   DeliveryQueue refactoring.
                 	o Refactor
                         o Change tests to test new interfaces
                         o Remove old interfaces
-                        . Re-test all modules by hand.
-                        - Unit tests for DeliveryPacket's more complex
+                        o Remove all users of addr in deliveryqueue
+                        o Remove addr from deliveryqueue.
+                        o Re-test all modules by hand.
+                        o Unit tests for DeliveryPacket's more complex
                           methods.
                 o Undaemonize threads; make them get shut
                   down explicitly so they can't die halfway.
                 . Test like crazy
-        - Signals
+        . Signals
                 o Cleaner shutdown on TERM.
                         o Implement
                         o Test
@@ -71,13 +73,22 @@
         - Support maybe (for the alpha cycle only!) to get the mixminion
           version remotely ????
         - Directories include an "allowable version" section.
-        - Saner retry logic: right now we retry once at each of the 10
+        . Saner retry logic: right now we retry once at each of the 10
           next Mix intervals, regardless of interval length.  (Have a 
           separate retry timer that gets rounded to the nearest mix
           event.)
-                - Make 'retry' delivery rates independent and
+                o Make 'retry' delivery rates independent and
                   module-adjustable.
-                - Make 'drop undeliverable' rate configurable.
+                o Make 'drop undeliverable' rate configurable.
+                o Make retry rates configurable.
+                	o For modules
+                        o For MMTP
+                o Tests for _parseIntervalList
+                o Test for new DeliveryQueue code
+                o Validation code for retry intervals.
+                - Test for module configuration
+                - Test for actual retrying
+                - Test for validation code
         - Statistics of some kind (with a server: count messages
           received, errors, etc.)
         - Separate error/other log files. ????
@@ -109,36 +120,34 @@
                 - Make all filenames in server config relative to
                   server home, if not absolute.
         . MMTP
-                . Code to send junk (connection padding)
+                o Code to send junk (connection padding)
                         o Implement for client
                         o Implement for nonblocking client
                         o Debug server
                         o Bump protocol version to 0.2
                         o Implement protocol negotiation. 
-                        - Tests
-                . Renegotiate connections
-                        . Implement
+                        o Advertise protocols in server descriptor.
+                        o Tests
+                o Renegotiate connections
+                        o Implement
                                 o Renegotiate from blocking client
                                 o Renegotiate from nonblocking
-                                - Server code to find out if clients
-                                  have renegotiated.
-                        - Test
-                D Don't check KEYID if KEYID=Z(20).  (Really?  The
-                  spec says so, but I don't think this is a good idea.)
-                D Session management and resumption (security
-                  issues?)   Is this really useful for performance?
+                        o Test
+                o Don't check KEYID if KEYID=Z(20).  (The spec says
+                  so, but I don't think this is a good idea.  We never
+                  generate packets of this form now; this feature may
+                  become deprecated with MMTP>0.2.)
                 o Pick a logical value for listen backlog.
-        . Core
-        	. When generating a DROP packet, the payload should
+        o Core
+        	o When generating a DROP packet, the payload should
                   be random, and there should be no tag.
                         o Implement
-                        - Test
+                        o Test
         - SMTP
                 - Add an extra "this is anonymous" header.
         - COME UP WITH A REAL TESTING STRATEGY FOR PERFORMANCE AND
            CLI'S AND MULTI-SERVER SITUATIONS.
         - Tests for packet addressed to server with bogus IP.
-        - Tests for 
         - ????
 
 Required for "1.0":
@@ -206,13 +215,19 @@
                 - Path selection
                         - Watch out for servers that are really the
                           same server
+                        - Only pick from the directory when picking
+                          random servers.
                         - Notice Allow/Deny.
+                        - Notice MMTP protocol versions.
                 - Send message to user with known public key
                 - Real PKI for end-to-end encryption
         - MMTP / async
                 - "IP" belongs in the MMTP part of the server descriptor.
                 - Timeout connections more aggressively under higher load.
                 - Bandwidth throttling
+                - Session management and resumption (security issues?)  Is this
+                  really useful for performance?
+                        - Server code to find out if clients have renegotiated.
                 - Tests for all cases:
                         - Junk
                         - Retry on bogus close.