[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[minion-cvs] Minor tweaks for 0.0.4 TODO; still processing my email
Update of /home/minion/cvsroot/src/minion
In directory moria.mit.edu:/tmp/cvs-serv1885
Modified Files:
TODO
Log Message:
Minor tweaks for 0.0.4 TODO; still processing my email
Index: TODO
===================================================================
RCS file: /home/minion/cvsroot/src/minion/TODO,v
retrieving revision 1.83
retrieving revision 1.84
diff -u -d -r1.83 -r1.84
--- TODO 20 Feb 2003 06:38:28 -0000 1.83
+++ TODO 5 Mar 2003 21:37:19 -0000 1.84
@@ -12,201 +12,36 @@
NEEDS TO BE WRITTEN:
-For 0.0.3:
- o Write a list of good introductory projects
- o Multithreaded server for better network behavior (no 10ms
- hiccups when receiving; no pauses to shred files or deliver
- messages.)
- o Make all C functions use Py_BEGIN_ALLOW_THREADS and
- Py_END_ALLOW_THREADS properly.
- o Make all commonly used Python code threadsafe.
- o Make Queues threadsafe.
- o Design
- o Implement
- o Rename Queue.py to ServerQueue.py
- o Do it
- o Come up with install code to scrub
- old Queue.py where found.
- o Come up with comments to explain why the
- whole thing is threadsafe as used, and
- explain what "as used" means. Add asserts
- to check "as used".
- o Make shredding happen in a separate thread.
- o Make delivery happen in a separate thread.
- o Make packet processing happen in a separate thread.
- o Move message decoding into packet handler thread.
- o Document
- o Refactor until sane -- possibly along with
- DeliveryQueue refactoring.
- o Refactor
- o Change tests to test new interfaces
- o Remove old interfaces
- 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.
- o Processing thread should be thunk-based so it can
- do more than handle packets.
- o Signals
- o Cleaner shutdown on TERM.
- o Implement
- o Test
- o Good reset handling for HUP.
- o Don't die
- o Reset logs
- X Support maybe (for the alpha cycle only!) to get the mixminion
- version remotely ????
- o 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.)
- o Make 'retry' delivery rates independent and
- module-adjustable.
- 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.
- o Test for validation code
- o Test for module configuration
- o Tests for stdout/stderr replacement
- o MMTP
- 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.
- o Advertise protocols in server descriptor.
- o Tests
- o Renegotiate connections
- o Implement
- o Renegotiate from blocking client
- o Renegotiate from nonblocking
- 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.
- o Core
- o When generating a DROP packet, the payload should
- be random, and there should be no tag.
- o Implement
- o Test
- o Make ServerInfo more forward-compatible.
- o Support unrecognized keys
- o SMTP
- o Add an extra "this is anonymous" header.
- o Build/install:
- o Uninstall support? (Right now, we take a cowardly
- approach that may be good enough.)
- o Perhaps 'make install' should nuke dead files. (Queue.py)
- o Support people who _do_ have OpenSSL 0.9.7 installed.
- o Client
- o Faster (adjustable?) timeout on client connect
- failure.
- o Implement client timeout (sigalrm?)
- o Add configuration options and reasonable default.
- o Unit tests
- o Refactor the heck out of argument parsing.
- o Add "don't use me for anonymity" boilerplate.
- o Client support for reply blocks.
- o Recheck spec on external reply block format
- o Implement external reply block format
- o Test external reply block format
- o Generate a reply block
- o Read message from reply block
- o Send message to reply block
- o Remember used reply blocks
- o Examine reply block
- o Use first reply block in a file.
- o Refactor and document
- o Read Base64-encoded messages and zbomb messages.
- o Implement backend
- o Test backend
- o Implement frontend
- o Test frontend
- o Refactor until clean
- o Document
- o Client-side pooling.
- o Design
- o Implement
- o Test
- o Make client code multiprocess-safe: locking on
- cache (if needed!); locking on pool.
- o Move lock functionality into Common.
- o Locking on cache
- o Locking on pool
- o Refactor locking; use only a single lock
- for all client functionality.
- o UI
- o Make path parsing accept space around the commas and colon.
- o Make paths print more cleanly.
- o Better command breakdown for pulling directories.
- o Break backward compatibility :P
- o Directories include an "allowable version" section.
- o Make client check 'Recommended-Software' against
- current version.
- o Fix aes_ctr128 and bump packet version and write
- unit tests for counter mode.
- o Bugs
- o mixminion generate-surb > x should work
- o Release candidate 1
- o Note all places that need documentation comments or
- additional testing.
- o Check all usage messages
- o Triage XXXX's
- o Resolve XXXX003's
- o Bump version numbers
- o Update README
- o What's new?
- o Document how to use new features
- o Installation insns for weird OpenSSL situations
- o Note that we break backward compatibility
- o Release
- o Resolve XXXX003's.
- o Better (more prominent) error messages when missing
- openssl.
- o Figure out flock problem. at least say, "blocking on
- pid #x".
- o Add 'stop-server', 'reload-server' functions.
- o Rename 'reload-server'
- o Come up with way to deal with servers as they
- upgrade.
- o Rename X-server to server-X.
- o Rename Type-III to Type III.
- o Better errors when missing pythondev.
- o Keep building when 'which' is borked.
- o Go over CVS commit logs for all contents of 'what's
- new?'
-
-Originally scheduled for 0.0.3, but delayed:
+For 0.0.4:
- UI
. Good user error reporting strategy.
+ - The error on '-P foo' should be 'path too short',
+ and not mention legs. (neruaL)
- Beautify list-servers output.
- Better error message when path+routinginfo won't fit
into header.
- Better concept of too-short paths.
- Change behavior on binary messages; don't dump 'em
to terminals.
+ - DELKEYS should work. (neruaL)
+ - Rename 'server' to server-start; keep 'server', but
+ deprecated.
- Make ServerInfo more forward-compatible.
- Skip sections completely if the version number isn't
recognized.
- Statistics of some kind (with a server: count messages
received, errors, etc.)
- Separate error/other log files. ????
+ - MMTP
+ - KEYID should be hash of signing key==hash of
+ identity key. (Spec may be incorrect.)
- Key management:
. Ability to generate new serverdesc with old keys.
- Ability to notice discrepancies between SD and
server configuration.
- Consider linewrap protection on server descriptors,
if demand warrants. (None yet.)
+
- Security:
- Password-protect dirserver keys
- Code to generate dummy packets. ????
@@ -319,7 +154,11 @@
- A well-tested 'make uninstall'
- RPMS, debs, and so on
. Make sure we run on solaris and *BSD.
- - "Somebody" should do a Windows port of the client code
+ - Make the software run under cygwin
+ - Handle weirdness with directory permissions
+ - flock
+ - Installing to relative path
+ - "Somebody" should do a native Windows port of the client code
- Build process
- Any C porting as necessary
- Signal code may need to change.