summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2011-02-22 18:38:03 -0500
committerNick Mathewson <nickm@torproject.org>2011-02-22 18:38:03 -0500
commit16b8b9b00f414343030c29990930c0e52a01fd84 (patch)
treeb5f72eb6b0f75cc53b3244ec5631ec9a2b645858
parent530e87ce316f8a3feb1b116c89cc703090217e2d (diff)
parenta2727f62494b8a56152214017ac8fb348dd064be (diff)
downloadtor-16b8b9b00f414343030c29990930c0e52a01fd84.tar.gz
tor-16b8b9b00f414343030c29990930c0e52a01fd84.zip
Merge remote branch 'arma/bug2403' into maint-0.2.2
-rw-r--r--changes/bug24036
-rw-r--r--src/or/circuitbuild.c3
2 files changed, 8 insertions, 1 deletions
diff --git a/changes/bug2403 b/changes/bug2403
new file mode 100644
index 0000000000..3b29b37fbb
--- /dev/null
+++ b/changes/bug2403
@@ -0,0 +1,6 @@
+ o Minor bugfixes:
+ - In the special case where you configure a public exit relay as your
+ bridge, Tor would be willing to use that exit relay as the last
+ hop in your circuit as well. Now we fail that circuit instead.
+ Bugfix on 0.2.0.12-alpha. Fixes bug 2403. Reported by "piebeer".
+
diff --git a/src/or/circuitbuild.c b/src/or/circuitbuild.c
index 4f8f5fbab0..b3c9f0e1b5 100644
--- a/src/or/circuitbuild.c
+++ b/src/or/circuitbuild.c
@@ -4063,7 +4063,6 @@ choose_random_entry(cpath_build_state_t *state)
int preferred_min, consider_exit_family = 0;
if (chosen_exit) {
- smartlist_add(exit_family, chosen_exit);
routerlist_add_family(exit_family, chosen_exit);
consider_exit_family = 1;
}
@@ -4086,6 +4085,8 @@ choose_random_entry(cpath_build_state_t *state)
r = entry_is_live(entry, need_uptime, need_capacity, 0, &msg);
if (!r)
continue; /* down, no point */
+ if (r == chosen_exit)
+ continue; /* don't pick the same node for entry and exit */
if (consider_exit_family && smartlist_isin(exit_family, r))
continue; /* avoid relays that are family members of our exit */
if (options->EntryNodes &&