r11641@Kushana: nickm | 2006-12-18 18:08:03 -0500

clean up TODO more: move deferred items to deferred items section; remove completed and abandoned-as-a-bad-idea stuff.


svn:r9153
This commit is contained in:
Nick Mathewson 2006-12-18 23:08:18 +00:00
parent be8eba481e
commit 7e056fdfd3

142
doc/TODO
View File

@ -13,9 +13,9 @@ P - phobos claims
D Deferred D Deferred
X Abandoned X Abandoned
X . <nickm> "Let's try to find a way to make it run and make the version X <nickm> "Let's try to find a way to make it run and make the version
match, but if not, let's just make it run." match, but if not, let's just make it run."
X - <arma> "should we detect if we have a --with-ssl-dir and try the -R X <arma> "should we detect if we have a --with-ssl-dir and try the -R
by default, if it works?" by default, if it works?"
Items for 0.1.2.x, real soon now: Items for 0.1.2.x, real soon now:
@ -24,8 +24,6 @@ Items for 0.1.2.x, real soon now:
descriptors. When we then get a socks request, we build circuits descriptors. When we then get a socks request, we build circuits
immediately using whatever descriptors we have, rather than waiting immediately using whatever descriptors we have, rather than waiting
until we've fetched correct ones. until we've fetched correct ones.
D - If the client's clock is too far in the past, it will drop (or
just not try to get) descriptors, so it'll never build circuits.
N - Test guard unreachable logic; make sure that we actually attempt to N - Test guard unreachable logic; make sure that we actually attempt to
connect to guards that we think are unreachable from time to time. connect to guards that we think are unreachable from time to time.
@ -37,12 +35,6 @@ N - Stop recommending exits as guards?
R - Reconstruct ChangeLog; put rolled-up info in ReleaseNotes or something. R - Reconstruct ChangeLog; put rolled-up info in ReleaseNotes or something.
Items for 0.1.2.x: Items for 0.1.2.x:
D - Now that we're avoiding exits when picking non-exit positions,
we need to consider how to pick nodes for internal circuits. If
we avoid exits for all positions, we skew the load balancing. If
we accept exits for all positions, we leak whether it's an internal
circuit at every step. If we accept exits only at the last hop, we
reintroduce Lasse's attacks from the Oakland paper.
- enumerate events of important things that occur in tor, so vidalia can - enumerate events of important things that occur in tor, so vidalia can
react. react.
o Backend implementation o Backend implementation
@ -72,26 +64,15 @@ N - Document .noconnect addresses...
A new file 'address-spec.txt' that describes .exit, .onion, A new file 'address-spec.txt' that describes .exit, .onion,
.noconnect, etc? .noconnect, etc?
D - We should ship with a list of stable dir mirrors -- they're not
trusted like the authorities, but they'll provide more robustness
and diversity for bootstrapping clients.
D - Simplify authority operation
- Follow weasel's proposal, crossed with mixminion dir config format
- Servers are easy to setup and run: being a relay is about as easy as - Servers are easy to setup and run: being a relay is about as easy as
being a client. being a client.
. Reduce resource load . Reduce resource load
D - Tolerate clock skew on bridge relays.
o A way to alert controller when router flags change. o A way to alert controller when router flags change.
o Specify: SETEVENTS NS o Specify: SETEVENTS NS
o Implement o Implement
R - Hunt for places that change networkstatus info that I might have R - Hunt for places that change networkstatus info that I might have
missed. missed.
D - A way to adjust router flags from the controller
how do we prevent the authority from clobbering them soon after?
D - a way to pick entry guards based wholly on extend_info equivalent;
a way to export extend_info equivalent.
R . option to dl directory info via tor R . option to dl directory info via tor
o Make an option like __AllDirActionsPrivate that falls back to o Make an option like __AllDirActionsPrivate that falls back to
non-Tor DL when not enough info present. (TunnelDirConns). non-Tor DL when not enough info present. (TunnelDirConns).
@ -100,52 +81,21 @@ R . option to dl directory info via tor
by default. by default.
- Handle case where we have no descriptors and so don't know who can - Handle case where we have no descriptors and so don't know who can
handle BEGIN_DIR. handle BEGIN_DIR.
D Count TLS bandwidth more accurately
N - DNS improvements N - DNS improvements
o Option to deal with broken DNS of the "ggoogle.com? Ah, you meant
ads.me.com!" variety.
o Autodetect whether DNS is broken in this way.
X Additional fix: allow clients to have some addresses that mean,
notfound. Yes, this blacklists IPs for having ever been used by
DNS hijackers.
o Don't ask reject *:* nodes for DNS unless client wants you to. o Don't ask reject *:* nodes for DNS unless client wants you to.
. Asynchronous DNS . Asynchronous DNS
o Document and rename SearchDomains, ResolvConf options
D Make API closer to getaddrinfo()
o Teach evdns about ipv6.
- Make evdns use windows strerror equivalents. - Make evdns use windows strerror equivalents.
o Teach evdns to be able to listen for requests to be processed. - Make sure patches get into libevent.
o Design interface.
o Rename stuff; current names suck.
o Design backend.
o Implement
o Listen for questions
o Parse questions, tell user code
o Let user code tell us the answer
o Generate responses
o Send responses to client
o Queue responses when we see EAGAIN
o Retry responses after a while
o Be efficient about labels.
o Fix the interface for flags and flag handling.
o Generate truncated responses correctly.
o Comment everything.
o Clean up XXXX items
o Test
D Add some kind of general question/response API so libevent can be
flexible here.
X Add option to use /etc/hosts?
X Special-case localhost?
- Verify that it works well on windows - Verify that it works well on windows
. Make reverse DNS work. . Make reverse DNS work.
. Add client-side interface . Add client-side interface
o SOCKS interface: specify o SOCKS interface: specify
o SOCKS interface: implement o SOCKS interface: implement
D? - Cache answers client-side d - Cache answers client-side
o Add to Tor-resolve.py o Add to Tor-resolve.py
- Add to tor-resolve - Add to tor-resolve
D? - Be a DNS proxy. d - Be a DNS proxy.
- Check for invalid characters in hostnames before trying to resolve - Check for invalid characters in hostnames before trying to resolve
them. (This will help catch attempts do to mean things to our DNS them. (This will help catch attempts do to mean things to our DNS
server, and bad software that tries to do DNS lookups on whole URLs.) server, and bad software that tries to do DNS lookups on whole URLs.)
@ -174,17 +124,7 @@ R - Take out the '5 second' timeout from the socks detach schedule.
- Performance improvements - Performance improvements
D - Better estimates in the directory of whether servers have good uptime
(high expected time to failure) or good guard qualities (high
fractional uptime).
- AKA Track uptime as %-of-time-up, as well as time-since-last-down
D - Have a "Faster" status flag that means it. Fast2, Fast4, Fast8?
- spec
- implement
- Critical but minor bugs, backport candidates. - Critical but minor bugs, backport candidates.
D - Failed rend desc fetches sometimes don't get retried. True/false?
- support dir 503s better - support dir 503s better
o clients don't log as loudly when they receive them o clients don't log as loudly when they receive them
N - they don't count toward the 3-strikes rule N - they don't count toward the 3-strikes rule
@ -197,17 +137,6 @@ N - split "router is down" from "dirport shouldn't be tried for a while"?
when they feel like it. when they feel like it.
- update dir-spec with what we decided for each of these - update dir-spec with what we decided for each of these
D - Windows server usability
- Solve the ENOBUFS problem.
- make tor's use of openssl operate on buffers rather than sockets,
so we can make use of libevent's buffer paradigm once it has one.
- make tor's use of libevent tolerate either the socket or the
buffer paradigm; includes unifying the functions in connect.c.
- We need a getrlimit equivalent on Windows so we can reserve some
file descriptors for saving files, etc. Otherwise we'll trigger
asserts when we're out of file descriptors and crash.
M - rewrite how libevent does select() on win32 so it's not so very slow.
- Add overlapped IO
Nd- Have a mode that doesn't write to disk much, so we can run Tor on Nd- Have a mode that doesn't write to disk much, so we can run Tor on
flash memory (e.g. Linksys routers or USB keys). flash memory (e.g. Linksys routers or USB keys).
@ -216,8 +145,6 @@ Nd- Have a mode that doesn't write to disk much, so we can run Tor on
- crank up the numbers if avoiddiskwrites is on. - crank up the numbers if avoiddiskwrites is on.
- some things may not want to get written at all. - some things may not want to get written at all.
- stop writing identity key / fingerprint / etc every restart - stop writing identity key / fingerprint / etc every restart
D stop caching directory stuff -- and disable mmap?
- an option to DontCacheDirectoryStuff
- more? - more?
NR. Write path-spec.txt NR. Write path-spec.txt
@ -285,12 +212,14 @@ P - Figure out why openssl 0.9.8d "make test" fails at sha256t test.
- What do we do about the fact that people can't read zlib- - What do we do about the fact that people can't read zlib-
compressed files manually? compressed files manually?
o Add IPv6 support to eventdns.c
- Refactor DNS resolve implementation - Refactor DNS resolve implementation
- Refactor exit side of resolve: do we need a connection_t? - Refactor exit side of resolve: do we need a connection_t?
- Refactor entry side of resolve: do we need a connection_t? - Refactor entry side of resolve: do we need a connection_t?
- If the client's clock is too far in the past, it will drop (or
just not try to get) descriptors, so it'll never build circuits.
- Tolerate clock skew on bridge relays.
- A more efficient dir protocol. - A more efficient dir protocol.
- Authorities should fetch the network-statuses amongst each - Authorities should fetch the network-statuses amongst each
other, consensus them, and advertise a communal network-status. other, consensus them, and advertise a communal network-status.
@ -322,17 +251,60 @@ P - Figure out why openssl 0.9.8d "make test" fails at sha256t test.
a more-or-less arbitrary request and get a response. a more-or-less arbitrary request and get a response.
- (Can we suppress cnames? Should we?) - (Can we suppress cnames? Should we?)
- Now that we're avoiding exits when picking non-exit positions,
we need to consider how to pick nodes for internal circuits. If
we avoid exits for all positions, we skew the load balancing. If
we accept exits for all positions, we leak whether it's an internal
circuit at every step. If we accept exits only at the last hop, we
reintroduce Lasse's attacks from the Oakland paper.
- We should ship with a list of stable dir mirrors -- they're not
trusted like the authorities, but they'll provide more robustness
and diversity for bootstrapping clients.
- Simplify authority operation
- Follow weasel's proposal, crossed with mixminion dir config format
- A way to adjust router flags from the controller.
(How do we prevent the authority from clobbering them soon after?)
- a way to pick entry guards based wholly on extend_info equivalent;
a way to export extend_info equivalent.
- Count TLS bandwidth more accurately
- Better estimates in the directory of whether servers have good uptime
(high expected time to failure) or good guard qualities (high
fractional uptime).
- AKA Track uptime as %-of-time-up, as well as time-since-last-down
- Have a "Faster" status flag that means it. Fast2, Fast4, Fast8?
- spec
- implement
- Failed rend desc fetches sometimes don't get retried. True/false?
- Windows server usability
- Solve the ENOBUFS problem.
- make tor's use of openssl operate on buffers rather than sockets,
so we can make use of libevent's buffer paradigm once it has one.
- make tor's use of libevent tolerate either the socket or the
buffer paradigm; includes unifying the functions in connect.c.
- We need a getrlimit equivalent on Windows so we can reserve some
file descriptors for saving files, etc. Otherwise we'll trigger
asserts when we're out of file descriptors and crash.
M - rewrite how libevent does select() on win32 so it's not so very slow.
- Add overlapped IO
- Add an option (related to AvoidDiskWrites) to disable directory caching.
Minor items for 0.1.2.x as time permits: Minor items for 0.1.2.x as time permits:
R - add d64 and fp64 along-side d and fp so people can paste status R - add d64 and fp64 along-side d and fp so people can paste status
entries into a url. since + is a valid base64 char, only allow one entries into a url. since + is a valid base64 char, only allow one
at a time. spec and then do. at a time. spec and then do.
D don't do dns hijacking tests if we're reject *:* exit policy? D don't do dns hijacking tests if we're reject *:* exit policy?
(deferred until 0.1.1.x is less common) (deferred until 0.1.1.x is less common)
o Some way for the authorities to set BadExit for some nodes manually.
- When we export something from foo.c file for testing purposes only, - When we export something from foo.c file for testing purposes only,
make a foo_test.h file for test.c to include. make a foo_test.h file for test.c to include.
o "getinfo fingerprint" controller command
o "setevent guards" controller command
- The Debian package now uses --verify-config when (re)starting, - The Debian package now uses --verify-config when (re)starting,
to distinguish configuration errors from other errors. Perhaps to distinguish configuration errors from other errors. Perhaps
the RPM and other startup scripts should too? the RPM and other startup scripts should too?
@ -361,10 +333,6 @@ R - add d64 and fp64 along-side d and fp so people can paste status
o The bw_accounting file should get merged into the state file. o The bw_accounting file should get merged into the state file.
- Streamline how we pick entry nodes: Make choose_random_entry() have - Streamline how we pick entry nodes: Make choose_random_entry() have
less magic and less control logic. less magic and less control logic.
o Better installers and build processes.
X Commit edmanm's win32 makefile to tor contrib, or write a new one.
(Abandoned for now; mingw is now our official windows build
enviroment.)
- Christian Grothoff's attack of infinite-length circuit. - Christian Grothoff's attack of infinite-length circuit.
the solution is to have a separate 'extend-data' cell type the solution is to have a separate 'extend-data' cell type
which is used for the first N data cells, and only which is used for the first N data cells, and only