summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorRoger Dingledine <arma@torproject.org>2003-08-22 03:17:14 +0000
committerRoger Dingledine <arma@torproject.org>2003-08-22 03:17:14 +0000
commitb800859239b8ec42aaf0be85e461ee3e9b3a7ac8 (patch)
tree2a4876fcc95f20322330dc70bbb29d47b8b1d9d0 /doc
parentfdc0389ca09ae5d05f3554e564b51f083e3352de (diff)
downloadtor-b800859239b8ec42aaf0be85e461ee3e9b3a7ac8.tar.gz
tor-b800859239b8ec42aaf0be85e461ee3e9b3a7ac8.zip
update TODO to reflect current reality
svn:r404
Diffstat (limited to 'doc')
-rw-r--r--doc/TODO54
1 files changed, 37 insertions, 17 deletions
diff --git a/doc/TODO b/doc/TODO
index 9cd5c89b1f..1f7d438088 100644
--- a/doc/TODO
+++ b/doc/TODO
@@ -12,17 +12,26 @@ ARMA - arma claims
X Abandoned
- . Use a stronger cipher
- o 3des for now
- - aes now, by including the code ourselves
- . Topics / circuits
- o Implement topics
+ o Use a stronger cipher
+ o aes now, by including the code ourselves
+ . streams / circuits
+ o Implement streams
o Rotate circuits after N minutes?
X Circuits should expire when circuit->expire triggers
NICK . Handle half-open connections
o Figure out what causes connections to close, standardize
when we mark a connection vs when we tear it down
o Look at what ssl does to keep from mutating data streams
+ - Reduce streamid footprint from 7 bytes to 3 bytes
+ - Check for collisions in streamid (now possible with
+ just 3 bytes), and back up & replace with padding if so
+ - Use the 3 saved bytes to put pseudorandomness in each cell
+ - Use the 4 reserved bytes in each cell header to keep 1/5
+ of a sha1 of the payload
+ - (Move these 4 bytes into the stream header)
+ - Consider moving length into the stream header too
+ - Spec the stream_id stuff. Clarify that nobody on the backward
+ stream should look at stream_id.
X On the fly compression of each stream
o Clean up the event loop (optimize and sanitize)
ARMA o Remove that awful concept of 'roles'
@@ -32,7 +41,10 @@ ARMA . Exit policies
- Let user request certain nodes
- And disallow certain nodes
D Choose path by jurisdiction, etc?
- - Rewrite how the AP works
+ - Make relay end cells have failure status and payload attached
+ - Streams that fail due to exit policy must reextend to new node
+ - Add extend_wait state to edge connections, thumb through them
+ when the AP get an extended cell.
SPEC!! D Non-clique topologies
D Implement our own memory management, at least for common structs
. Appropriate logging
@@ -56,6 +68,13 @@ SPEC!! D Non-clique topologies
o An address doesn't resolve
o We have max workers running
o Consider taking the master out of the loop?
+ . Put CPU workers in separate processes
+ o Handle multiple cpu workers (one for each cpu, plus one)
+ o Queue for pending tasks if all workers full
+ o Support the 'process this onion' task
+ - Support the 'decrypt this RSA blob' handshake1 task
+ - Handle cpuworkers dying
+ D Support later handshake parts
. Directory servers
D Automated reputation management
o Include key in source; sign directories
@@ -80,7 +99,7 @@ SPEC!! D Figure out how to do threshold directory servers
. Get socks4a support into Mozilla
. Get tor to act like a socks server
o socks4, socks4a
- - socks5
+ D socks5
SPEC!! - Handle socks commands other than connect, eg, bind?
. Develop rendezvous points
. Spec (still needs step-by-step instructions)
@@ -100,7 +119,7 @@ NICK . Unit tests
- Performance tests, so we know when we've improved
. webload infrastructure (Bruce)
. httperf infrastructure (easy to set up)
- . oprofile (installed in RH 8.0)
+ . oprofile (installed in RH >8.0)
D Deploy a widespread network
. Router twins
o Choose twin if primary is down, when laying circuit
@@ -112,29 +131,30 @@ NICK . Daemonize and package
- Red Hat spec file
- Debian spec file equivalent
. Autoconf
- . Which .h files are we actually using? Port to:
+ . Which .h files are we actually using?
+ . Port to:
o Linux
o BSD
. Solaris
- . Windows
+ o Cygwin
+ . Win32
o OS X
o openssl randomness
o inet_ntoa
- - stdint.h
+ . stdint.h
- Make a script to set up a local network on your machine
D Move away from openssl
o Abstract out crypto calls
D Look at nss, others? Just include code?
-
- . transition addr to sin_addr (huh?)
-
o Clean up the number of places that get to look at prkey
. Clearer bandwidth management
- - Total rate limiting
- . Look at OR handshake in more detail
+ - Do we want to remove bandwidth from OR handshakes?
+ - What about OP handshakes?
+ o Total rate limiting
+ o Look at OR handshake in more detail
o Spec it
o Merge OR and OP handshakes
- . rearrange connection_or so it doesn't suck so much to read
+ o rearrange connection_or so it doesn't suck so much to read
D Periodic link key rotation. Spec?
- More flexibility in node addressing
D Support IPv6 rather than just 4