Merge remote branch 'origin/maint-0.2.2'

There was a conflict from the node_t transition, but it was an easy fix.

Conflicts:
	src/or/circuitbuild.c
This commit is contained in:
Nick Mathewson 2011-02-22 18:41:06 -05:00
commit 9265164180
2 changed files with 8 additions and 1 deletions

6
changes/bug2403 Normal file
View File

@ -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".

View File

@ -4081,7 +4081,6 @@ choose_random_entry(cpath_build_state_t *state)
int preferred_min, consider_exit_family = 0; int preferred_min, consider_exit_family = 0;
if (chosen_exit) { if (chosen_exit) {
smartlist_add(exit_family, (void*) chosen_exit);
nodelist_add_node_family(exit_family, chosen_exit); nodelist_add_node_family(exit_family, chosen_exit);
consider_exit_family = 1; consider_exit_family = 1;
} }
@ -4103,6 +4102,8 @@ choose_random_entry(cpath_build_state_t *state)
node = entry_is_live(entry, need_uptime, need_capacity, 0, &msg); node = entry_is_live(entry, need_uptime, need_capacity, 0, &msg);
if (!node) if (!node)
continue; /* down, no point */ continue; /* down, no point */
if (node == chosen_exit)
continue; /* don't pick the same node for entry and exit */
if (consider_exit_family && smartlist_isin(exit_family, node)) if (consider_exit_family && smartlist_isin(exit_family, node))
continue; /* avoid relays that are family members of our exit */ continue; /* avoid relays that are family members of our exit */
if (options->EntryNodes && if (options->EntryNodes &&