[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.