Roger Dingledine [Sun, 20 Sep 2009 01:52:57 +0000 (21:52 -0400)]
Be more willing to use an unsuitable circuit for exit.
Specifically, there are two cases: a) are we willing to start a new
circuit at a node not in your ExitNodes config option, and b) are we
willing to make use of a circuit that's already established but has an
unsuitable exit.
Now we discard all your circuits when you set ExitNodes, so the only
way you could end up with an exit circuit that ends at an unsuitable
place is if we explicitly ran out of exit nodes, StrictNodes was 0,
and we built this circuit to solve a stream that needs solving.
Fixes bug in dc322931, which would ignore the just-built circuit because
it has an unsuitable exit.
Roger Dingledine [Sun, 20 Sep 2009 00:56:57 +0000 (20:56 -0400)]
Make EntryNodes config option much more aggressive.
Before it would prepend your requested entrynodes to your list of guard
nodes, but feel free to use others after that. Now it chooses only
from your EntryNodes if any of those are available, and only falls back
to others if a) they're all down and b) StrictNodes is not set.
Also, now we refresh your entry guards from EntryNode at each consensus
fetch (rather than just at startup and then they slowly rot as the
network changes).
The goal here is to make users less likely to set StrictNodes, since
it's doing closer to what they expect it should be doing.
Karsten Loesing [Sat, 12 Dec 2009 07:32:46 +0000 (08:32 +0100)]
Fix bridge statistics.
Fix statistics on client numbers by country as seen by bridges that were
broken in 0.2.2.1-alpha. Also switch to reporting full 24-hour intervals
instead of variable 12-to-48-hour intervals.
Karsten Loesing [Wed, 28 Oct 2009 06:47:47 +0000 (07:47 +0100)]
Remove v0 hidden service statistics code.
The HSAuthorityRecordStats option was used to track statistics of overall
hidden service usage on the version 0 hidden service authorities. With the
version 2 hidden service directories being deployed and version 0
descriptors being phased out, these statistics are not as useful anymore.
Goodbye, you fine piece of software; my first major code contribution to
Tor.
Nick Mathewson [Tue, 15 Dec 2009 22:23:36 +0000 (17:23 -0500)]
Refactor the safe_str_*() API to make more sense.
The new rule is: safe_str_X() means "this string is a piece of X
information; make it safe to log." safe_str() on its own means
"this string is a piece of who-knows-what; make it safe to log".
Nick Mathewson [Tue, 15 Dec 2009 18:53:53 +0000 (13:53 -0500)]
Change interface for configuring cell ewma algorithm.
The rule is now: take the value from the CircuitPriorityHalflife
config option if it is set. If it zero, disable the cell_ewma
algorithm. If it is set, use it to calculate the scaling factor.
If it is not set, look for a CircPriorityHalflifeMsec parameter in the
consensus networkstatus. If *that* is zero, then disable the cell_ewma
algorithm; if it is set, use it to calculate the scaling factor.
If it is not set at all, disable the algorithm.
Sebastian Hahn [Mon, 14 Dec 2009 08:53:31 +0000 (09:53 +0100)]
Remove some dead code found by coverity, cid 404
In connection_dir_client_reached_eof, we make sure that we either
return when we get an http status code of 503 or handle the problem
and set it to 200. Later we check if the status code is 503. Remove
that check.
Nick Mathewson [Sat, 12 Dec 2009 05:49:48 +0000 (00:49 -0500)]
Optimize cell-ewma circuit priority algorithm.
There are two big changes here:
- We store active circuits in a priority queue for each or_conn,
rather than doing a linear search over all the active circuits
before we send each cell.
- Rather than multiplying every circuit's cell-ewma by a decay
factor every time we send a cell (thus normalizing the value of a
current cell to 1.0 and a past cell to alpha^t), we instead
only scale down the cell-ewma every tick (ten seconds atm),
normalizing so that a cell sent at the start of the tick has
value 1.0).
Can Tang [Thu, 10 Dec 2009 16:12:42 +0000 (11:12 -0500)]
Favor quiet circuits when choosing which order to relay cells in.
Each circuit is ranked in terms of how many cells from it have been
relayed recently, using a time-weighted average.
This patch has been tested this on a private Tor network on PlanetLab,
and gotten improvements of 12-35% in time it takes to fetch a small
web page while there's a simultaneous large data transfer going on
simultaneously.
[Commit msg by nickm based on mail from Ian Goldberg.]
Nick Mathewson [Thu, 10 Dec 2009 16:57:30 +0000 (11:57 -0500)]
Enhance pqueue so we can remove items from the middle.
This changes the pqueue API by requiring an additional int in every
structure that we store in a pqueue to hold the index of that structure
within the heap.
Martin Peck [Fri, 4 Dec 2009 19:25:08 +0000 (14:25 -0500)]
Improved workaround for disabled OpenSSL renegotiation.
It turns out that OpenSSL 0.9.8m is likely to take a completely
different approach for reenabling renegotiation than OpenSSL 0.9.8l
did, so we need to work with both. :p Fixes bug 1158.
Karsten Loesing [Thu, 3 Dec 2009 09:51:51 +0000 (10:51 +0100)]
Minor fix to buffer stats.
Do not segfault when writing buffer stats when we haven't observed a
single circuit to report about. This is a minor bug that would only show
up in testing environments with no traffic and with reduced stats
intervals.
Peter Palfrader [Mon, 23 Nov 2009 17:59:23 +0000 (18:59 +0100)]
Merge branch 'debian-merge' into debian
* debian-merge: (81 commits)
Drop debian/patches/0a58567c-work-with-reneg-ssl.dpatch (part of upstream)
New upstream version
bump to 0.2.2.6-alpha
remove the 0.2.1.20 debian changelog from master's changelog
Not everybody likes debugging printfs as much as I
add the 0.2.1.20 changelog blurb, plus update the releasenotes
Do not report a partially-successful detached signature add as failed.
only complain when rejecting a descriptor if it has contact info
clean up changelog for the 0.2.2.6-alpha release
Fix compilation with with bionic libc.
New upstream version
Fix a memory leak on directory authorities during voting
Fix building from a separate build directory.
Add changelog entry to 0.2.2.x about openssl 0.9.8l fix
Make Tor work with OpenSSL 0.9.8l
Fix a URL in a log message.
Implement DisableAllSwap to avoid putting secret info in page files.
Fix bug 1113.
Improve log statement when publishing v2 hs desc.
Fix bug 1042.
...
Peter Palfrader [Mon, 23 Nov 2009 17:50:53 +0000 (18:50 +0100)]
Merge commit 'tor-0.2.2.6-alpha' into debian-merge
* commit 'tor-0.2.2.6-alpha': (79 commits)
bump to 0.2.2.6-alpha
remove the 0.2.1.20 debian changelog from master's changelog
Not everybody likes debugging printfs as much as I
add the 0.2.1.20 changelog blurb, plus update the releasenotes
Do not report a partially-successful detached signature add as failed.
only complain when rejecting a descriptor if it has contact info
clean up changelog for the 0.2.2.6-alpha release
Fix compilation with with bionic libc.
New upstream version
Fix a memory leak on directory authorities during voting
Fix building from a separate build directory.
Add changelog entry to 0.2.2.x about openssl 0.9.8l fix
Make Tor work with OpenSSL 0.9.8l
Fix a URL in a log message.
Implement DisableAllSwap to avoid putting secret info in page files.
Fix bug 1113.
Improve log statement when publishing v2 hs desc.
Fix bug 1042.
Fix an apparently bogus check; fortunately, it seems to be untriggered.
Fix an accidentally removed free in 385853a282138a61, and repair a check.
...
Roger Dingledine [Mon, 23 Nov 2009 15:13:50 +0000 (10:13 -0500)]
fix race condition that can cause crashes at client or exit relay
Avoid crashing if the client is trying to upload many bytes and the
circuit gets torn down at the same time, or if the flip side
happens on the exit relay. Bugfix on 0.2.0.1-alpha; fixes bug 1150.
Roger Dingledine [Sun, 22 Nov 2009 04:36:36 +0000 (23:36 -0500)]
New config option "CircuitStreamTimeout"
New config option "CircuitStreamTimeout" to override our internal
timeout schedule for how many seconds until we detach a stream from
a circuit and try a new circuit. If your network is particularly
slow, you might want to set this to a number like 60.
Nick Mathewson [Fri, 20 Nov 2009 18:28:16 +0000 (13:28 -0500)]
Fix compilation on OSX 10.3.
On this OSX version, there is a stub mlockall() function
that doesn't work, *and* the declaration for it is hidden by
an '#ifdef _P1003_1B_VISIBLE'. This would make autoconf
successfully find the function, but our code fail to build
when no declaration was found.
This patch adds an additional test for the declaration.
Jacob Appelbaum [Sat, 14 Nov 2009 21:43:22 +0000 (16:43 -0500)]
Fix compilation with with bionic libc.
This fixes bug 1147:
bionic doesn't have an actual implementation of mlockall();
mlockall() is merely in the headers but not actually in the library.
This prevents Tor compilation with the bionic libc for Android handsets.
Peter Palfrader [Fri, 13 Nov 2009 18:58:59 +0000 (19:58 +0100)]
Merge branch 'debian-merge' into debian-0.2.1
* debian-merge: (37 commits)
New upstream version
bump to 0.2.1.20
Move moria1 and Tonga to alternate IP addresses.
read the "circwindow" parameter from the consensus
Code to parse and access network parameters.
Revert "Teach connection_ap_can_use_exit about Exclude*Nodes"
Work around a memory leak in openssl 0.9.8g (and maybe others)
Teach connection_ap_can_use_exit about Exclude*Nodes
make some bug 1090 warnings go away
Fix a memory leak when parsing a ns
Fix obscure 64-bit big-endian hidserv bug
turns out the packaging changes aren't in 0.2.1.20
update changelog with bundle details
Use an _actual_ fix for the byte-reverse warning.
Use a simpler fix for the byte-reversing warning
Fix compile warnings on Snow Leopard
Add getinfo accepted-server-descriptor. Clean spec.
Reduce log level for bug case that we now know really exists.
Only send reachability status events on overall success/failure
update the README instructions and OS X makefiles
...
Peter Palfrader [Fri, 13 Nov 2009 18:01:22 +0000 (19:01 +0100)]
Merge commit 'tor-0.2.1.20' into debian-merge
* commit 'tor-0.2.1.20': (36 commits)
bump to 0.2.1.20
Move moria1 and Tonga to alternate IP addresses.
read the "circwindow" parameter from the consensus
Code to parse and access network parameters.
Revert "Teach connection_ap_can_use_exit about Exclude*Nodes"
Work around a memory leak in openssl 0.9.8g (and maybe others)
Teach connection_ap_can_use_exit about Exclude*Nodes
make some bug 1090 warnings go away
Fix a memory leak when parsing a ns
Fix obscure 64-bit big-endian hidserv bug
turns out the packaging changes aren't in 0.2.1.20
update changelog with bundle details
Use an _actual_ fix for the byte-reverse warning.
Use a simpler fix for the byte-reversing warning
Fix compile warnings on Snow Leopard
Add getinfo accepted-server-descriptor. Clean spec.
Reduce log level for bug case that we now know really exists.
Only send reachability status events on overall success/failure
update the README instructions and OS X makefiles
Avoid segfault when accessing hidden service.
...
Nick Mathewson [Thu, 5 Nov 2009 23:13:08 +0000 (18:13 -0500)]
Make Tor work with OpenSSL 0.9.8l
To fix a major security problem related to incorrect use of
SSL/TLS renegotiation, OpenSSL has turned off renegotiation by
default. We are not affected by this security problem, however,
since we do renegotiation right. (Specifically, we never treat a
renegotiated credential as authenticating previous communication.)
Nevertheless, OpenSSL's new behavior requires us to explicitly
turn renegotiation back on in order to get our protocol working
again.
Amusingly, this is not so simple as "set the flag when you create
the SSL object" , since calling connect or accept seems to clear
the flags.
For belt-and-suspenders purposes, we clear the flag once the Tor
handshake is done. There's no way to exploit a second handshake
either, but we might as well not allow it.