|
@@ -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 &&
|