From: Roger Dingledine Date: Fri, 22 Aug 2003 03:17:14 +0000 (+0000) Subject: update TODO to reflect current reality X-Git-Tag: tor-0.0.2pre8~64 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b800859239b8ec42aaf0be85e461ee3e9b3a7ac8;p=thirdparty%2Ftor.git update TODO to reflect current reality svn:r404 --- 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