[or-cvs] continue messing with the changelog. it"s getting better now.
arma at seul.org
arma at seul.org
Tue May 23 06:20:38 UTC 2006
Update of /home2/or/cvsroot/tor
In directory moria:/home/arma/work/onion/cvs/tor
Modified Files:
ChangeLog
Log Message:
continue messing with the changelog. it's getting better now.
Index: ChangeLog
===================================================================
RCS file: /home2/or/cvsroot/tor/ChangeLog,v
retrieving revision 1.157
retrieving revision 1.158
diff -u -p -d -r1.157 -r1.158
--- ChangeLog 22 May 2006 20:00:12 -0000 1.157
+++ ChangeLog 23 May 2006 06:20:35 -0000 1.158
@@ -1,21 +1,4 @@
-Changes in version 0.1.1.20 - 2006-05-xx
- o Unsorted
- - Fix minor integer overflow in calculating when we expect to use up
- our bandwidth allocation before hibernating.
- - If ORPort is set, Address is not explicitly set, and our hostname
- resolves to a private IP address, try to use an interface address
- if it has a public address. Now Windows machines that think of
- themselves as localhost can guess their address.
- - Lower the minimum required number of file descriptors to 1000,
- so we can have some overhead for Valgrind on Linux, where the
- default ulimit -n is 1024.
- - Stop writing the "router.desc" file, ever. Nothing uses it anymore,
- and its existence is confusing some users.
- - Start storing useful information to $DATADIR/state file, so we
- can remember things across invocations of Tor. Retain unrecognized
- lines so we can be forward-compatible, and write a TorVersion line
- so we can be backward-compatible.
-
+Changes in version 0.1.1.20 - 2006-05-23
o Crash and assert fixes from 0.1.0.17:
- Fix assert bug in close_logs() on exit: when we close and delete
logs, remove them all from the global "logfiles" list.
@@ -85,9 +68,8 @@ Changes in version 0.1.1.20 - 2006-05-xx
Goldberg can prove things about our handshake protocol more
easily.
- Make dirservers generate a separate "guard" flag to mean
- "would make a good entry guard".
- - Clients now honor the "guard" flag in the router status when
- picking entry guards, rather than looking at is_fast or is_stable.
+ "would make a good entry guard". Clients now honor the "guard"
+ flag rather than looking at is_fast or is_stable.
- Fix a possible way to DoS dirservers.
- Try to list MyFamily elements by key, not by nickname, and warn
if we've not heard of a server.
@@ -147,7 +129,7 @@ Changes in version 0.1.1.20 - 2006-05-xx
- Clients don't download or use the old directory anymore. Now they
download and use network-statuses from the trusted dirservers,
and fetch individual server descriptors as needed from mirrors.
- - Clients no longer download descriptors for non-running servers.
+ - Clients don't download descriptors for non-running servers.
- Download descriptors by digest, not by fingerprint. Caches try to
download all listed digests from authorities; clients try to
download "best" digests from caches. This avoids partitioning
@@ -164,11 +146,6 @@ Changes in version 0.1.1.20 - 2006-05-xx
to bootstrap the first set of descriptors.
- When picking a random directory, prefer non-authorities if any
are known.
- - Make the "stable" router flag in network-status be the median of
- the uptimes of running valid servers, and make clients pay
- attention to the network-status flags. Thus the cutoff adapts
- to the stability of the network as a whole, making IRC, IM, etc
- connections more reliable.
- Add a new flag to network-status indicating whether the server
can answer v2 directory requests too.
- Directory mirrors now cache up to 16 unrecognized network-status
@@ -178,37 +155,23 @@ Changes in version 0.1.1.20 - 2006-05-xx
- Clients consider a threshold of versioning dirservers (dirservers
who have an opinion about which Tor versions are still recommended)
before deciding whether to warn the user that he's obsolete.
-
- - Make directory servers return better http 404 error messages
- instead of a generic "Servers unavailable".
- - When writing the RecommendedVersions lines, sort them first.
- - Retry directory requests if we fail to get an answer we like
- from a given dirserver (we were retrying before, but only if
- we fail to connect).
- - Return a robots.txt on our dirport to discourage google indexing.
-
- o Start on the new directory design:
- Publish individual descriptors (by fingerprint, by "all", and by
"tell me yours").
- Publish client and server recommended versions separately.
- - Allow tor_gzip_uncompress() to handle multiple concatenated
- compressed strings. Serve compressed groups of router
- descriptors. The compression logic here could be more
- memory-efficient.
- Change DirServers config line to note which dirs are v1 authorities.
- Remove option when getting directory cache to see whether they
support running-routers; they all do now. Replace it with one
to see whether caches support v2 stuff.
+ - Stop listing down or invalid nodes in the v1 directory. This
+ reduces its bulk by about 1/3, and reduces load on mirrors.
+ - Mirrors no longer cache the v1 directory as often.
+ - If we as a directory mirror don't know of any v1 directory
+ authorities, then don't try to cache any v1 directories.
- - Add tor.dizum.com as the fifth authoritative directory server.
+ o Other directory improvements:
- Add lefkada.eecs.harvard.edu as a fourth authoritative directory
server.
- - Stop listing down or invalid nodes in the v1 directory. This
- reduces its bulk by about 1/3, and reduces load on mirrors.
- - Mirrors stop caching the v1 directory so often.
- - Make the v2 dir's "Fast" flag based on relative capacity, just
- like "Stable" is based on median uptime. Name everything in the
- top 7/8 Fast, and only the top 1/2 gets to be a Guard.
+ - Add tor.dizum.com as the fifth authoritative directory server.
- Authoritative dirservers no longer require an open connection from
a server to consider him "reachable". We need this change because
when we add new auth dirservers, old servers won't know not to
@@ -217,14 +180,27 @@ Changes in version 0.1.1.20 - 2006-05-xx
of each server, and only list as running the ones they found to
be reachable. We also send back warnings to the server's logs if
it uploads a descriptor that we already believe is unreachable.
- - If we as a directory mirror don't know of any v1 directory
- authorities, then don't try to cache any v1 directories.
+ - Make the "stable" router flag in network-status be the median of
+ the uptimes of running valid servers, and make clients pay
+ attention to the network-status flags. Thus the cutoff adapts
+ to the stability of the network as a whole, making IRC, IM, etc
+ connections more reliable.
+ - Make the v2 dir's "Fast" flag based on relative capacity, just
+ like "Stable" is based on median uptime. Name everything in the
+ top 7/8 Fast, and only the top 1/2 gets to be a Guard.
+ - Make directory servers return better http 404 error messages
+ instead of a generic "Servers unavailable".
+ - When writing the RecommendedVersions lines, sort them first.
+ - Retry directory requests if we fail to get an answer we like
+ from a given dirserver (we were retrying before, but only if
+ we fail to connect).
+ - Return a robots.txt on our dirport to discourage google indexing.
- o New controller protocol:
+ o Controller protocol improvements:
- Revised controller protocol (version 1) that uses ascii rather
- than binary. Add supporting libraries in python and java and
- c# so you can use the controller from your applications without
- caring how our protocol works.
+ than binary: tor/doc/control-spec.txt. Add supporting libraries
+ in python and java and c# so you can use the controller from your
+ applications without caring how our protocol works.
- Allow the DEBUG controller event to work again. Mark certain log
entries as "don't tell this to controllers", so we avoid cycles.
- New controller function "getinfo accounting", to ask how
@@ -233,20 +209,19 @@ Changes in version 0.1.1.20 - 2006-05-xx
AllowUnverifiedNodes and LongLivedPorts to "". Also, if you give
a config option in the torrc with no value, then it clears it
entirely (rather than setting it to its default).
- - Add a "GETINFO config-file" to tell us where torrc is.
- - Implement some more GETINFO goodness: expose guard nodes, config
- options, getinfo keys.
- - Add a QUIT command for the controller (when using it manually).
- - Add a new function to "change pseudonyms" -- that is, to stop
+ - Add a "GETINFO config-file" to tell us where torrc is. Also
+ expose guard nodes, config options/names.
+ - Add a QUIT command (when when using the controller manually).
+ - Add a new signal NEWNYM to "change pseudonyms" -- that is, to stop
using any currently-dirty circuits for new streams, so we don't
- link new actions to old actions. Currently it's only called on
- HUP (or SIGNAL RELOAD).
+ link new actions to old actions. This also occurs on HUP (or
+ SIGNAL RELOAD).
- If we would close a stream early (e.g. it asks for a .exit that
we know would refuse it) but the LeaveStreamsUnattached config
option is set by the controller, then don't close it.
- - Add a new controller event type that allows controllers to get
- all server descriptors that were uploaded to a router in its role
- as authoritative dirserver.
+ - Add a new controller event type AUTHDIR_NEWDESCS that allows
+ controllers to get all server descriptors that were uploaded to
+ a router in its role as authoritative dirserver.
- New controller option "getinfo desc/all-recent" to fetch the
latest server descriptor for every router that Tor knows about.
- Fix the controller's "attachstream 0" command to treat conn like
@@ -257,25 +232,28 @@ Changes in version 0.1.1.20 - 2006-05-xx
the controller. Also, rotate dns and cpu workers if the controller
changes options that will affect them; and initialize the dns
worker cache tree whether or not we start out as a server.
- - New controller signal NEWNYM that makes new application requests
- use clean circuits.
- Add a new circuit purpose 'controller' to let the controller ask
for a circuit that Tor won't try to use. Extend the EXTENDCIRCUIT
controller command to let you specify the purpose if you're starting
a new circuit. Add a new SETCIRCUITPURPOSE controller command to
let you change a circuit's purpose after it's been created.
- - Let the controller ask for GETINFO dir/server/foo so it can ask
- directly rather than connecting to the dir port.
+ - Let the controller ask for "getinfo dir/server/foo" so it can ask
+ directly rather than connecting to the dir port. "getinfo
+ dir/status/foo" also works, but currently only if your DirPort
+ is enabled.
- Let the controller tell us about certain router descriptors
that it doesn't want Tor to use in circuits. Implement
SETROUTERPURPOSE and modify +POSTDESCRIPTOR to do this.
- - When the controller's *setconf commands fail, collect an error
- message in a string and hand it back to the controller.
- - Allow "getinfo dir/status/foo" to work, as long as your DirPort
- is enabled. (This is a hack, and will be fixed in 0.1.2.x.)
+ - If the controller's *setconf commands fail, collect an error
+ message in a string and hand it back to the controller -- don't
+ just tell them to go read their logs.
o Scalability, resource management, and performance:
- - When we're a server, a client asks for an old-style directory,
+ - Fix a major load balance bug: we were round-robining in 16 KB
+ chunks, and servers with bandwidthrate of 20 KB, while downloading
+ a 600 KB directory, would starve their other connections. Now we
+ try to be a bit more fair.
+ - If we're a server, a client asks for an old-style directory,
and our write bucket is empty, don't give it to him. This way
small servers can continue to serve the directory *sometimes*,
without getting overloaded.
@@ -283,23 +261,20 @@ Changes in version 0.1.1.20 - 2006-05-xx
The main change is to not advertise if we're running at capacity
and either a) we could hibernate or b) our capacity is low and
we're using a default DirPort.
- - Compress exit policies even more -- look for duplicate lines
- and remove them.
+ - We weren't cannibalizing circuits correctly for
+ CIRCUIT_PURPOSE_C_ESTABLISH_REND and
+ CIRCUIT_PURPOSE_S_ESTABLISH_INTRO, so we were being forced to
+ build those from scratch. This should make hidden services faster.
+ - Predict required circuits better, with an eye toward making hidden
+ services faster on the service end.
+ - Compress exit policies even more: look for duplicate lines and
+ remove them.
- Generate 18.0.0.0/8 address policy format in descs when we can;
warn when the mask is not reducible to a bit-prefix.
- - Fix a major load balance bug: we were round-robining in 16 KB
- chunks, and servers with bandwidthrate of 20 KB, while downloading
- a 600 KB directory, would starve their other connections. Now we
- try to be a bit more fair.
- On platforms that don't have getrlimit (like Windows), we were
artificially constraining ourselves to a max of 1024
connections. Now just assume that we can handle as many as 15000
connections. Hopefully this won't cause other problems.
- - Tor servers with dynamic IP addresses were needing to wait 18
- hours before they could start doing reachability testing using
- the new IP address and ports. This is because they were using
- the internal descriptor to learn what to test, yet they were only
- rebuilding the descriptor once they decided they were reachable.
- Spread the authdirservers' reachability testing over the entire
testing interval, so we don't try to do 500 TLS's at once every
20 minutes.
@@ -318,52 +293,61 @@ Changes in version 0.1.1.20 - 2006-05-xx
- Allow tor_gzip_uncompress to extract as much as possible from
truncated compressed data. Try to extract as many
descriptors as possible from truncated http responses (when
- DIR_PURPOSE_FETCH_ROUTERDESC).
+ purpose is DIR_PURPOSE_FETCH_ROUTERDESC).
- Make circ->onionskin a pointer, not a static array. moria2 was using
125000 circuit_t's after it had been up for a few weeks, which
translates to 20+ megs of wasted space.
- The private half of our EDH handshake keys are now chosen out
of 320 bits, not 1024 bits. (Suggested by Ian Goldberg.)
- - Some Tor servers process billions of cells per day. These statistics
- need to be uint64_t's.
- - We weren't cannibalizing circuits correctly for
- CIRCUIT_PURPOSE_C_ESTABLISH_REND and
- CIRCUIT_PURPOSE_S_ESTABLISH_INTRO, so we were being forced to
- build those from scratch. This should make hidden services faster.
- - Predict required circuits better, with an eye toward making hidden
- services faster on the service end.
- - We were marking servers down when they could not answer every piece
- of the directory request we sent them. This was far too harsh.
- Stop doing the complex voodoo overkill checking for insecure
Diffie-Hellman keys. Just check if it's in [2,p-2] and be happy.
- - Clean up more of the OpenSSL memory when exiting, so we can detect
- memory leaks better.
- - Do round-robin writes of at most 16 kB per write. This might be
- more fair on loaded Tor servers.
- - When a Tor server's IP changes (e.g. from a dyndns address),
- upload a new descriptor so clients will learn too.
+ - Do round-robin writes for TLS of at most 16 kB per write. This
+ might be more fair on loaded Tor servers.
+ - Do not use unaligned memory access on alpha, mips, or mipsel.
+ It *works*, but is very slow, so we treat them as if it doesn't.
+
+ o Other bugfixes and improvements:
+ - Start storing useful information to $DATADIR/state file, so we
+ can remember things across invocations of Tor. Retain unrecognized
+ lines so we can be forward-compatible, and write a TorVersion line
+ so we can be backward-compatible.
+ - If ORPort is set, Address is not explicitly set, and our hostname
+ resolves to a private IP address, try to use an interface address
+ if it has a public address. Now Windows machines that think of
+ themselves as localhost can guess their address.
+ - Regenerate our local descriptor if it's dirty and we try to use
+ it locally (e.g. if it changes during reachability detection).
+ This was causing some Tor servers to keep publishing the same
+ initial descriptor forever.
+ - Tor servers with dynamic IP addresses were needing to wait 18
+ hours before they could start doing reachability testing using
+ the new IP address and ports. This is because they were using
+ the internal descriptor to learn what to test, yet they were only
+ rebuilding the descriptor once they decided they were reachable.
+ - It turns out we couldn't bootstrap a network since we added
+ reachability detection in 0.1.0.1-rc. Good thing the Tor network
+ has never gone down. Add an AssumeReachable config option to let
+ servers and dirservers bootstrap. When we're trying to build a
+ high-uptime or high-bandwidth circuit but there aren't enough
+ suitable servers, try being less picky rather than simply failing.
+ - Newly bootstrapped Tor networks couldn't establish hidden service
+ circuits until they had nodes with high uptime. Be more tolerant.
+ - We were marking servers down when they could not answer every piece
+ of the directory request we sent them. This was far too harsh.
- Really busy servers were keeping enough circuits open on stable
connections that they were wrapping around the circuit_id
space. (It's only two bytes.) This exposed a bug where we would
feel free to reuse a circuit_id even if it still exists but has
been marked for close. Try to fix this bug. Some bug remains.
-
- o Other bugfixes and improvements:
- When we fail to bind or listen on an incoming or outgoing
socket, we now close it before refusing, rather than just
leaking it. (Thanks to Peter Palfrader for finding.)
- - Regenerate our local descriptor if it's dirty and we try to use
- it locally (e.g. if it changes during reachability detection).
- Fix a file descriptor leak in start_daemon().
- On Windows, you can't always reopen a port right after you've
closed it. So change retry_listeners() to only close and re-open
ports that have changed.
- - Newly bootstrapped Tor networks couldn't establish hidden service
- circuits until they had nodes with high uptime. Be more tolerant.
- Workaround a problem with some http proxies where they refuse GET
- requests that specify "Content-Length: 0" (reported by Adrian).
- - Add reasons to DESTROY and RELAY_TRUNCATED cells, so clients can
- get a better idea of why their circuits failed. Not used yet.
+ requests that specify "Content-Length: 0". Reported by Adrian.
- Recover better from TCP connections to Tor servers that are
broken but don't tell you (it happens!); and rotate TLS
connections once a week.
@@ -372,28 +356,32 @@ Changes in version 0.1.1.20 - 2006-05-xx
servers, and never switch to state CIRCUIT_STATE_OPEN.
- Check for even more Windows version flags when writing the platform
string in server descriptors, and note any we don't recognize.
+ - Add reasons to DESTROY and RELAY_TRUNCATED cells, so clients can
+ get a better idea of why their circuits failed. Not used yet.
- Add TTLs to RESOLVED, CONNECTED, and END_REASON_EXITPOLICY cells.
We don't use them yet, but maybe one day our DNS resolver will be
able to discover them.
- Let people type "tor --install" as well as "tor -install" when they
want to make it an NT service.
- - Correct the man page entry on TrackHostExitsExpire.
- Looks like we were never delivering deflated (i.e. compressed)
running-routers lists, even when asked. Oops.
- - We were leaking some memory every time the client changes IPs.
+ - We were leaking some memory every time the client changed IPs.
+ - Clean up more of the OpenSSL memory when exiting, so we can detect
+ memory leaks better.
- Never call free() on tor_malloc()d memory. This will help us
use dmalloc to detect memory leaks.
- - Do not use unaligned memory access on alpha, mips, or mipsel.
- It *works*, but is very slow, so we treat them as if it doesn't.
- - It turns out we couldn't bootstrap a network since we added
- reachability detection in 0.1.0.1-rc. Good thing the Tor network
- has never gone down. Add an AssumeReachable config option to let
- servers and dirservers bootstrap. When we're trying to build a
- high-uptime or high-bandwidth circuit but there aren't enough
- suitable servers, try being less picky rather than simply failing.
+ - Some Tor servers process billions of cells per day. These statistics
+ need to be uint64_t's.
- Check [X-]Forwarded-For headers in HTTP requests when generating
log messages. This lets people run dirservers (and caches) behind
Apache but still know which IP addresses are causing warnings.
+ - Fix minor integer overflow in calculating when we expect to use up
+ our bandwidth allocation before hibernating.
+ - Lower the minimum required number of file descriptors to 1000,
+ so we can have some overhead for Valgrind on Linux, where the
+ default ulimit -n is 1024.
+ - Stop writing the "router.desc" file, ever. Nothing uses it anymore,
+ and its existence is confusing some users.
o Config option fixes:
- Add a new config option ExitPolicyRejectPrivate which defaults to
@@ -427,6 +415,7 @@ Changes in version 0.1.1.20 - 2006-05-xx
- Get rid of IgnoreVersion undocumented config option, and make us
only warn, never exit, when we're running an obsolete version.
- Make MonthlyAccountingStart config option truly obsolete now.
+ - Correct the man page entry on TrackHostExitsExpire.
- Let auth dir servers start without specifying an Address config
option.
- Change "AllowUnverifiedNodes" to "AllowInvalidNodes", to
@@ -559,6 +548,7 @@ Changes in version 0.1.1.20 - 2006-05-xx
- Log server fingerprint on startup, so new server operators don't
have to go hunting around their filesystem for it.
+
Changes in version 0.1.0.17 - 2006-02-17
o Crash bugfixes on 0.1.0.x:
- When servers with a non-zero DirPort came out of hibernation,
More information about the tor-commits
mailing list