[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

[minion-cvs] Break and fix server repeatedly until DNS-based routing...



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

Modified Files:
	TODO setup.py 
Log Message:
Break and fix server repeatedly until DNS-based routing works.  Hurray.

TODO:
 - Reflect state of work
 - Defer client-side fragment reassembly

setup.py
 - Bump version to 0.0.6alpha2

BuildMessage.py
 - Choose relay types and routing info based on server capabilities -- don't
   just assume that IPV4 is right for everyone.

ClientDirectory.py
 - Document everything.
 - Remove spurious isSURB field from ExitAddress
 - Fix theoretical bug that would crash path generation with non-mixminion
   servers.
 - Deprecate unadorned '*' in paths.
 - Note bug with path length checking.

ClientMain.py
 - Deprecate -H; use -P foo instead.
 - Make list-servers work

Config.py, NetUtils.py:
 - Refactor _parseIP and _parseIP6 validation functions into NetUtils.

Config.py
 - Add documentation

NetUtils.py
 - Add documentation
 - Debug getIP
 - Add function to detect static IP4 or IP6 addresses.

Packet.py
 - Debug parseRelayInfoByType
 - Documentation

ServerInfo.py:
 - Documentation
 - Disable hostname-based routing with 0.0.6alpha1 servers.  (I don't
   want to break Tonga and peertech.)
 
test.py:
 - Add tests for DNS functionality
 - Add tests for DNS farm functionality
 - Add tests for new ServerInfo methods

DNSFarm.py
 - Add documentation
 - Make DNSCache.shutdown() more failsafe, and make shutdown(wait=1) not
   deadlock the server.
 - Add special-case test to skip hostname lookup for static IP addresses

MMTPServer.py
 - Make sure that we get real RelayPacket objects.
 - Choose whether to use IP4 or IP6 connections in MMTPClientConnection

PacketHandler.py
 - Accept HOST relay types and MMTPHostInfo routinginfo.

ServerConfig.py:
 - Remove obsolete __DEBUG_GC option.

ServerMain:
 - Change same-server detection mechanism to only look at key ID.

ServerQueue.py:
 - Add assert to catch weird bug case.
 



Index: TODO
===================================================================
RCS file: /home/minion/cvsroot/src/minion/TODO,v
retrieving revision 1.162
retrieving revision 1.163
diff -u -d -r1.162 -r1.163
--- TODO	7 Nov 2003 10:43:18 -0000	1.162
+++ TODO	10 Nov 2003 04:12:19 -0000	1.163
@@ -18,19 +18,55 @@
 For 0.0.6:  (The release for integrators, Windows users, senders of
 large replies, people with dynamically assigned IPs, people with high
 TCP latency, and me.)
-        . Infrastructure -- low level
-                . Generic 'encrypted storage' abstraction for
+        o Infrastructure -- low level
+                o Generic 'encrypted storage' abstraction for
                   possibly-encrypted singleton pickled objects.
                         o Implement
                         o Integrate
-                        . Test
+                        o Test
                 o Switch ClientQueue to use metadata
+        o Fix misc annoyances
+                o Don't generate dead keys when restarting the server
+                  after the last keys have long expired.
+                o Make sure we clean out Filestores used by clients.
+                o Don't remove currently-undeliverable messages from client
+                  queue when flushing.
+                o Don't say "foo is not recommended" 7 times!
+        o Dynamic IP support
+                o Change IPv4/IPv6 delivery methods to use DNS if desired.
+                  [Migration plan: Supplement 'IP' with 'Hostname' in
+                   ServerInfo.  If we're routing S1->S2, and both have
+                   'Hostname', use FWD/HOST.  Else use FWD/IPv4.  In 0.0.7,
+                   drop FWD/IPv4 support, and remove IP from ServerInfo.]
+                        o Rename *FWD_TYPE to FWD_IPV4_TYPE
+                        o Implement DNS farm
+                                o Implement
+                                o Unit tests
+                        o ServerInfo changes
+                                o Implement
+                                . Unit tests
+                        o Path generation changes
+                                o Implement stub canRelayTo and getRoutingFor
+                                  in ServerInfo.
+                                o Design functionality for can-i-relay-to and
+                                  how-to-i-route-to.
+                                o Use above functions whenever appropriate
+                                o Extend above functions to use IPV4 or HOST.
+                                o Test above functions
+                        o Implement *FWD/HOST
+                                o Changes in Packet.py
+                                o Test changes in Packet.py
+                                o Multiplex on routingtype.
+                        o Implement Host-based routing
+                                o Implement
+                                o Notice self-routing properly
+                                o Test
         . Infrastructure -- high level
                 o Separate directory downloading, directory caching, path
                   parsing, and path generation into a new module.
                 o Separate SURB logging, keystores, and client queues into
                   client support module.
-                . Refactor path selection to have a nicer interface.
+                o Refactor path selection to have a nicer interface.
                         X Generic, cross-module notion of "address".
                         X Better capability infrastructure.
                         o Better ExitAddress notion.
@@ -38,7 +74,7 @@
                           checking specifier list for sanity, and generating
                           path from specifier list.
                         o Switch unit tests to test new interface to ClientDir
-                        - New unit tests for multiple converging paths.
+                        o New unit tests for multiple converging paths.
                 o Rewrite ClientMain path generation to do the right
                   thing with multi-packet messages
                         o Write the code
@@ -48,6 +84,12 @@
                   decide whether to look for a tag in the RI field.
                 D Make processing thread and module thread general
                   cases of a thread pool abstraction.?
+        - Fragmentation logic fixes
+                - Deliver non-FRAGMENT fragment messages
+                - Don't allow 'FRAGMENT' exit type if no exit modules are
+                  supported.
+                - Catch wild mismatches between Max-Packets on FRAGMENT 
+                  and Max-Size on SMTP/MBOX/etc.
         - UI improvements:
                 . Add some convenient way to list arbitrary server features.
                         o Refactor Config to have a richer idea of types
@@ -72,60 +114,22 @@
                   database type.
                 . List servers by nickname, not by IP.
                 - Make TRACE mode less verbose, or make DEBUG mode more useful.
-        - Large reply messages and efwd messages
-                - Relay non-FRAGMENT fragment messages
-                o Make the fragment path selection not suck.
-                - Send logic for client
-                - Fragment-pool logic for client
-                - Don't allow 'FRAGMENT' exit type if no exit modules are
-                  supported.
-                - Catch wild mismatches between Max-Packets on FRAGMENT 
-                  and Max-Size on SMTP/MBOX/etc.
         - Full windows support
                 - Address everything on Itamar's non-blocking
                   incompatibility list.
                 - Installer
                 - Instructions
                 - Py2EXE support
-        o Fix misc annoyances
-                o Don't generate dead keys when restarting the server
-                  after the last keys have long expired.
-                o Make sure we clean out Filestores used by clients.
-                o Don't remove currently-undeliverable messages from client
-                  queue when flushing.
-                o Don't say "foo is not recommended" 7 times!
-        - Dynamic IP support
-                - Change IPv4/IPv6 delivery methods to use DNS if desired.
-                  [Migration plan: Supplement 'IP' with 'Hostname' in
-                   ServerInfo.  If we're routing S1->S2, and both have
-                   'Hostname', use FWD/HOST.  Else use FWD/IPv4.  In 0.0.7,
-                   drop FWD/IPv4 support, and remove IP from ServerInfo.]
-                        o Rename *FWD_TYPE to FWD_IPV4_TYPE
-                        . Implement DNS farm
-                        . ServerInfo changes
-                        - Path generation changes
-                                o Implement stub canRelayTo and getRoutingFor
-                                  in ServerInfo.
-                                - Design functionality for can-i-relay-to and
-                                  how-to-i-route-to. (impl too)
-                                . Use above functions whenever appropriate
-                                - Extend above functions to use IPV4 or HOST.
-                        . Implement *FWD/HOST
-                                o Changes in Packet.py
-                                - Test changes in Packet.py
-                                o Multiplex on routingtype.
-                        . Implement Host-based routing
-                                o Implement
-                                - Notice self-routing properly
-                                - Test
-         . Spec conformance
+        . Spec conformance
                 . Directory Spec
                         o Implement Packet-Versions
                         o Don't use Key-Digest; mark it for removal in 0.0.7.
                         - Make sure Maximum-Size and Allow-From are obeyed
                           for all types
                 - Support SURB secret exchange format.
-         - Specification
+        - Security
+               - Make sure clients always shuffle packets before delivery.
+        - Specification
                 - Clear up specification for payload versions.
                 - Clear up specification for NEWS
                 - Clear up specification for multiple addrs on MAIL
@@ -146,6 +150,10 @@
                   integrators.
         - MMTP
                 - Make MMTP bursty
+        . Large reply messages and efwd messages
+                o Make the fragment path selection not suck.
+                o Send logic for client
+                - Fragment-pool logic for client
         - Dynamic IP support
                 - Servers redirect to latest IP if old IP is down.  (Dynamic
                   IP support, after a fashion.)

Index: setup.py
===================================================================
RCS file: /home/minion/cvsroot/src/minion/setup.py,v
retrieving revision 1.79
retrieving revision 1.80
diff -u -d -r1.79 -r1.80
--- setup.py	13 Oct 2003 17:25:06 -0000	1.79
+++ setup.py	10 Nov 2003 04:12:19 -0000	1.80
@@ -6,9 +6,9 @@
 #
 #   Current Mixminion version
 #
-VERSION = '0.0.6alpha1'
+VERSION = '0.0.6alpha2'
 # System: 0==alpha, 50==beta, 98=pre, 99==release candidate, 100==release
-VERSION_INFO = (0,0,6,0,1)
+VERSION_INFO = (0,0,6,0,2)
 
 # Check the version.  We need to make sure version_info exists before we
 # compare to it: it was only added as of Python version 1.6.