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".
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.
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.
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).
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.]
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.
Some *_free functions threw asserts when passed NULL. Now all of them
accept NULL as input and perform no action when called that way.
This gains us consistence for our free functions, and allows some
code simplifications where an explicit null check is no longer necessary.
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.
(patch by coderman; commit message by nickm)
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.
* 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.
...
* 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 385853a282, and repair a check.
...
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.
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.