Add a "getinfo status/accepted-server-descriptor" controller
command, which is the recommended way for controllers to learn
whether our server descriptor has been successfully received by at
least on directory authority. Un-recommend good-server-descriptor
getinfo and status events until we have a better design for them.
Roger Dingledine [Mon, 31 Aug 2009 20:14:41 +0000 (16:14 -0400)]
Only send reachability status events on overall success/failure
We were telling the controller about CHECKING_REACHABILITY and
REACHABILITY_FAILED status events whenever we launch a testing
circuit or notice that one has failed. Instead, only tell the
controller when we want to inform the user of overall success or
overall failure. Bugfix on 0.1.2.6-alpha. Fixes bug 1075. Reported
by SwissTorExit.
Roger Dingledine [Fri, 28 Aug 2009 07:42:09 +0000 (03:42 -0400)]
Only send netinfo clock_skew to controller if an authority told us so
We were triggering a CLOCK_SKEW controller status event whenever
we connect via the v2 connection protocol to any relay that has
a wrong clock. Instead, we should only inform the controller when
it's a trusted authority that claims our clock is wrong. Bugfix
on 0.2.0.20-rc; starts to fix bug 1074. Reported by SwissTorExit.
Nick Mathewson [Thu, 20 Aug 2009 15:51:34 +0000 (11:51 -0400)]
Fix a rare infinite-recursion bug when shutting down.
Once we had called log_free_all(), anything that tried to log a
message (like a failed tor_assert()) would fail like this:
1. The logging call eventually invokes the _log() function.
2. _log() calls tor_mutex_lock(log_mutex).
3. tor_mutex_lock(m) calls tor_assert(m).
4. Since we freed the log_mutex, tor_assert() fails, and tries to
log its failure.
5. GOTO 1.
Now we allocate the mutex statically, and never destroy it on
shutdown.
Bugfix on 0.2.0.16-alpha, which introduced the log mutex.
Karsten Loesing [Tue, 11 Aug 2009 15:33:58 +0000 (17:33 +0200)]
Fix possible segmentation fault on directory authorities.
The more verbose logs that were added in ee58153 also include a string
that might not have been initialized. This can lead to segfaults, e.g.,
when setting up private Tor networks. Initialize this string with NULL.
Roger Dingledine [Mon, 10 Aug 2009 08:13:18 +0000 (04:13 -0400)]
Send sendmes when we're down 100 cells, not 101.
Send circuit or stream sendme cells when our window has decreased
by 100 cells, not when it has decreased by 101 cells. Bug uncovered
by Karsten when testing the "reduce circuit window" performance
patch. Bugfix on the 54th commit on Tor -- from July 2002,
before the release of Tor 0.0.0. This is the new winner of the
oldest-bug prize.
Peter Palfrader [Wed, 29 Jul 2009 10:18:37 +0000 (12:18 +0200)]
Merge branch 'debian-merge' into debian
* debian-merge:
New upstream version
bump to 0.2.1.19
document my new relay-early behavior
Changing MaxAdvertisedBW may not need a republish
Write fingerprint to file and log without spaces
Don't leak memory if we get too many create cells
three hacks to workaround bug 1038
Peter Palfrader [Wed, 29 Jul 2009 10:18:06 +0000 (12:18 +0200)]
Merge commit 'tor-0.2.1.19' into debian-merge
* commit 'tor-0.2.1.19':
bump to 0.2.1.19
document my new relay-early behavior
Changing MaxAdvertisedBW may not need a republish
Write fingerprint to file and log without spaces
Don't leak memory if we get too many create cells
three hacks to workaround bug 1038
Sebastian Hahn [Tue, 7 Jul 2009 16:04:00 +0000 (18:04 +0200)]
Changing MaxAdvertisedBW may not need a republish
Relays no longer publish a new server descriptor if they change
their MaxAdvertisedBandwidth config option but it doesn't end up
changing their advertised bandwidth numbers. Bugfix on 0.2.0.28-rc;
fixes bug 1026. Patch from Sebastian.
Roger Dingledine [Tue, 28 Jul 2009 01:01:24 +0000 (21:01 -0400)]
three hacks to workaround bug 1038
The problem is that clients and hidden services are receiving
relay_early cells, and they tear down the circuit.
Hack #1 is for rendezvous points to rewrite relay_early cells to
relay cells. That way there are never any incoming relay_early cells.
Hack #2 is for clients and hidden services to never send a relay_early
cell on an established rendezvous circuit. That works around rendezvous
points that haven't upgraded yet.
Hack #3 is for clients and hidden services to not tear down the circuit
when they receive an inbound relay_early cell. We already refuse extend
cells at clients.
Peter Palfrader [Sat, 25 Jul 2009 09:15:42 +0000 (11:15 +0200)]
Merge branch 'debian-merge' into debian
* debian-merge:
New upstream version
bump to 0.2.1.18
put in the full 0.2.1 release notes
add a changelog entry for the upcoming 0.2.1.18
make phobos's lines start with tabs again
added LIBS=-lrt to Makefile.am for static libevent in the tor rpms.
forward-port the 0.2.0.35 release notes
add blurbs for recent release candidates
Bump version to 0.2.1.17-rc-dev
Peter Palfrader [Sat, 25 Jul 2009 09:10:36 +0000 (11:10 +0200)]
Merge commit 'tor-0.2.1.18' into debian-merge
* commit 'tor-0.2.1.18':
bump to 0.2.1.18
put in the full 0.2.1 release notes
add a changelog entry for the upcoming 0.2.1.18
make phobos's lines start with tabs again
added LIBS=-lrt to Makefile.am for static libevent in the tor rpms.
forward-port the 0.2.0.35 release notes
add blurbs for recent release candidates
Bump version to 0.2.1.17-rc-dev
Peter Palfrader [Mon, 13 Jul 2009 21:37:30 +0000 (23:37 +0200)]
Merge branch 'debian-merge' into debian
* debian-merge: (21 commits)
Bump version to 0.2.1.17-rc
Make "Invalid onion hostname" msg respect SafeLogging.
updated rpm instructions for realtime libevent.
Revise 0.2.1.17-rc changelog.
Make an attempt to fix bug 1024.
Update the year for the copyright statement in two more files
another minor patch to add to 0.2.1.x
and give the bug 969 fixes a changelog
the third piece of bug 969 fixing
the second piece of bug 969 fixing
the first piece of bug 969 fixing
Have eventdns set the "truncated" bit correctly.
stop capping bandwidths we see in the consensus
Added ChangeLog entry for control port fix
Ignore control port commands after a QUIT
Flush long replies over control port on QUIT
add a changelog entry: clients use bw in consensus
Clients now use bandwidth values in the consensus
Serve DirPortFrontPage even if the write bucket is low.
Add warning that the results of --enable-geoip-stats are different from those in master.
...
Peter Palfrader [Mon, 13 Jul 2009 21:26:44 +0000 (23:26 +0200)]
Merge commit 'tor-0.2.1.17-rc' into debian-merge
* commit 'tor-0.2.1.17-rc': (21 commits)
Bump version to 0.2.1.17-rc
Make "Invalid onion hostname" msg respect SafeLogging.
updated rpm instructions for realtime libevent.
Revise 0.2.1.17-rc changelog.
Make an attempt to fix bug 1024.
Update the year for the copyright statement in two more files
another minor patch to add to 0.2.1.x
and give the bug 969 fixes a changelog
the third piece of bug 969 fixing
the second piece of bug 969 fixing
the first piece of bug 969 fixing
Have eventdns set the "truncated" bit correctly.
stop capping bandwidths we see in the consensus
Added ChangeLog entry for control port fix
Ignore control port commands after a QUIT
Flush long replies over control port on QUIT
add a changelog entry: clients use bw in consensus
Clients now use bandwidth values in the consensus
Serve DirPortFrontPage even if the write bucket is low.
Add warning that the results of --enable-geoip-stats are different from those in master.
...
Karsten Loesing [Tue, 30 Jun 2009 18:35:03 +0000 (20:35 +0200)]
Make an attempt to fix bug 1024.
The internal error "could not find intro key" occurs when we want to send
an INTRODUCE1 cell over a recently finished introduction circuit and think
we built the introduction circuit with a v2 hidden service descriptor, but
cannot find the introduction key in our descriptor.
My first guess how we can end up in this situation is that we are wrong in
thinking that we built the introduction circuit based on a v2 hidden
service descriptor. This patch checks if we have a v0 descriptor, too, and
uses that instead.
Roger Dingledine [Tue, 30 Jun 2009 14:14:15 +0000 (10:14 -0400)]
another minor patch to add to 0.2.1.x
o Minor features:
- If we're a relay and we change our IP address, be more verbose
about the reason that made us change. Should help track down
further bugs for relays on dynamic IP addresses.
Roger Dingledine [Sat, 20 Jun 2009 09:25:14 +0000 (05:25 -0400)]
the third piece of bug 969 fixing
when we write out our stability info, detect relays that have slipped
through the cracks. log about them and correct the problem.
if we continue to see a lot of these over time, it means there's another
spot where relays fall out of the routerlist without being marked as
unreachable.
Marcus Griep [Wed, 24 Jun 2009 03:09:27 +0000 (23:09 -0400)]
Flush long replies over control port on QUIT
Marks the control port connection for flushing before closing when
the QUIT command is issued. This allows a QUIT to be issued during
a long reply over the control port, flushing the reply and then
closing the connection. Fixes bug 1015.
Roger Dingledine [Sun, 21 Jun 2009 12:54:35 +0000 (08:54 -0400)]
Clients now use bandwidth values in the consensus
rather than the bandwidth values in each relay descriptor. This approach
opens the door to more accurate bandwidth estimates once the directory
authorities start doing active measurements. Implements more of proposal
141.
Nick Mathewson [Mon, 22 Jun 2009 16:34:32 +0000 (12:34 -0400)]
Serve DirPortFrontPage even if the write bucket is low.
arma's rationale: "I think this is a bug, since people intentionally
set DirPortFrontPage, so they really do want their relay to serve that
page when it's asked for. Having it appear only sometimes (or roughly
never in Sebastian's case) makes it way less useful."
Peter Palfrader [Sat, 20 Jun 2009 11:08:43 +0000 (13:08 +0200)]
Merge branch 'debian-merge' into debian
* debian-merge: (33 commits)
Forward port 06_add_compile_time_defaults
New upstream version
Bump version to 0.2.1.16-rc
prepare changelog for 0.2.1.16-rc
Better fix for 997.
Revert "Backport fix for bug 997."
tor-resolve: Don't automatically refuse .onion addresses.
Backport fix for bug 997.
Revise earlier check for correct IPv4 addr length to check for ==4.
Check answer_len in the remap_addr case of process_relay_cell_not_open.
update requirements to openssl 0.9.7
Missing changelog entry about geoip
Move and fix a changelog entry. Noticed by optimist.
Avoid a memory corruption problem related to "private" in DirPolicy.
Update the rest of the geoip file.
Update the geoip file
Fix gprof bottlenecks on exit nodes found by Jacob.
Do not report a node as a "chosen exit" when it is not in fact an exit.
Make the second argument to routerset_contains_extendinfo const
Don't attempt to log messages to a controller from a worker thread.
...
Peter Palfrader [Sat, 20 Jun 2009 10:59:04 +0000 (12:59 +0200)]
Merge commit 'tor-0.2.1.16-rc' into debian-merge
* commit 'tor-0.2.1.16-rc': (31 commits)
Bump version to 0.2.1.16-rc
prepare changelog for 0.2.1.16-rc
Better fix for 997.
Revert "Backport fix for bug 997."
tor-resolve: Don't automatically refuse .onion addresses.
Backport fix for bug 997.
Revise earlier check for correct IPv4 addr length to check for ==4.
Check answer_len in the remap_addr case of process_relay_cell_not_open.
update requirements to openssl 0.9.7
Missing changelog entry about geoip
Move and fix a changelog entry. Noticed by optimist.
Avoid a memory corruption problem related to "private" in DirPolicy.
Update the rest of the geoip file.
Update the geoip file
Fix gprof bottlenecks on exit nodes found by Jacob.
Do not report a node as a "chosen exit" when it is not in fact an exit.
Make the second argument to routerset_contains_extendinfo const
Don't attempt to log messages to a controller from a worker thread.
Clean up a bit of C logic, and fix an erroneous warning.
Consider *ListenAddress when warning about low ports and hibernation
...
If the Tor is running with AutomapHostsOnResolve set, it _is_
reasonable to do a DNS lookup on a .onion address. So instead we make
tor-resolve willing to try to resolve anything. Only if Tor refuses
to resolve it do we suggest to the user that resolving a .onion
address may not work.
Roger Dingledine [Fri, 12 Jun 2009 15:18:02 +0000 (11:18 -0400)]
Check answer_len in the remap_addr case of process_relay_cell_not_open.
Fix an edge case where a malicious exit relay could convince a
controller that the client's DNS question resolves to an internal IP
address. Bug found and fixed by "optimist"; bugfix on 0.1.2.8-beta.
Nick Mathewson [Wed, 3 Jun 2009 17:52:03 +0000 (13:52 -0400)]
Fix gprof bottlenecks on exit nodes found by Jacob.
Apparently all the stuff that does a linear scan over all the DNS
cache entries can get really expensive when your DNS cache is very
large. It's hard to say how much this will help performance, since
gprof doesn't count time spent in OpenSSL or zlib, but I'd guess 10%.
Also, this patch removes calls to assert_connection_ok() from inside
the read and write callbacks, which are similarly unneeded, and a
little costlier than I'm happy with.
Nick Mathewson [Wed, 27 May 2009 18:07:41 +0000 (14:07 -0400)]
Do not report a node as a "chosen exit" when it is not in fact an exit.
Provide a useful warning when launch_circuit tries to make us use a
node we don't want to use. Just give an info message when this is a
normal and okay situation. Fix for logging issues in bug 984.
Peter Palfrader [Sun, 31 May 2009 10:43:38 +0000 (10:43 +0000)]
Update Standards-Version 3.8.1
Update Standards-Version from 3.8.0 to 3.8.1. No real changes required, we
already support nocheck in DEB_BUILD_OPTIONS since August 2004, and we already
create our var/run directory in the init script (tho we now no longer ship it
either - see above).
Peter Palfrader [Sun, 31 May 2009 10:38:24 +0000 (10:38 +0000)]
Be quiet when creating /var/run/tor.
No longer inform the user if/when we re-create the /var/run/tor directory in
the init script. With /var/run on tmpfs this is completely normal now so our
message was just noise.
Nick Mathewson [Fri, 29 May 2009 14:18:50 +0000 (10:18 -0400)]
Don't attempt to log messages to a controller from a worker thread.
This patch adds a function to determine whether we're in the main
thread, and changes control_event_logmsg() to return immediately if
we're in a subthread. This is necessary because otherwise we will
call connection_write_to_buf, which modifies non-locked data
structures.
Bugfix on 0.2.0.x; fix for at least one of the things currently
called "bug 977".