If we're a relay, avoid picking ourselves as an introduction point,

a rendezvous point, or as the final hop for internal circuits. Bug
reported by taranis and lodger. Bugfix on 0.1.2.x.


svn:r13372
This commit is contained in:
Roger Dingledine 2008-02-04 17:25:24 +00:00
parent 426a9bbde1
commit fdbefc8934
3 changed files with 12 additions and 10 deletions

View File

@ -1,4 +1,9 @@
Changes in version 0.2.0.19-alpha - 2008-0?-?? Changes in version 0.2.0.19-alpha - 2008-02-??
o Major bugfixes:
- If we're a relay, avoid picking ourselves as an introduction point,
a rendezvous point, or as the final hop for internal circuits. Bug
reported by taranis and lodger. Bugfix on 0.1.2.x.
o Minor bugfixes: o Minor bugfixes:
- Directory caches now fetch certificates from all authorities - Directory caches now fetch certificates from all authorities
listed in a networkstatus consensus, even when they do not listed in a networkstatus consensus, even when they do not

View File

@ -1577,10 +1577,6 @@ choose_good_middle_server(uint8_t purpose,
smartlist_add(excluded, r); smartlist_add(excluded, r);
routerlist_add_family(excluded, r); routerlist_add_family(excluded, r);
} }
if ((r = routerlist_find_my_routerinfo())) {
smartlist_add(excluded, r);
routerlist_add_family(excluded, r);
}
for (i = 0, cpath = head; i < cur_len; ++i, cpath=cpath->next) { for (i = 0, cpath = head; i < cur_len; ++i, cpath=cpath->next) {
if ((r = router_get_by_digest(cpath->extend_info->identity_digest))) { if ((r = router_get_by_digest(cpath->extend_info->identity_digest))) {
smartlist_add(excluded, r); smartlist_add(excluded, r);
@ -1624,10 +1620,6 @@ choose_good_entry_server(uint8_t purpose, cpath_build_state_t *state)
smartlist_add(excluded, r); smartlist_add(excluded, r);
routerlist_add_family(excluded, r); routerlist_add_family(excluded, r);
} }
if ((r = routerlist_find_my_routerinfo())) {
smartlist_add(excluded, r);
routerlist_add_family(excluded, r);
}
if (firewall_is_fascist_or()) { if (firewall_is_fascist_or()) {
/* exclude all ORs that listen on the wrong port */ /* exclude all ORs that listen on the wrong port */
routerlist_t *rl = router_get_routerlist(); routerlist_t *rl = router_get_routerlist();

View File

@ -1659,7 +1659,7 @@ router_choose_random_node(const char *preferred,
int weight_for_exit) int weight_for_exit)
{ {
smartlist_t *sl, *excludednodes; smartlist_t *sl, *excludednodes;
routerinfo_t *choice = NULL; routerinfo_t *choice = NULL, *r;
bandwidth_weight_rule_t rule; bandwidth_weight_rule_t rule;
tor_assert(!(weight_for_exit && need_guard)); tor_assert(!(weight_for_exit && need_guard));
@ -1669,6 +1669,11 @@ router_choose_random_node(const char *preferred,
excludednodes = smartlist_create(); excludednodes = smartlist_create();
add_nickname_list_to_smartlist(excludednodes,excluded,0); add_nickname_list_to_smartlist(excludednodes,excluded,0);
if ((r = routerlist_find_my_routerinfo())) {
smartlist_add(excludednodes, r);
routerlist_add_family(excludednodes, r);
}
/* Try the preferred nodes first. Ignore need_uptime and need_capacity /* Try the preferred nodes first. Ignore need_uptime and need_capacity
* and need_guard, since the user explicitly asked for these nodes. */ * and need_guard, since the user explicitly asked for these nodes. */
if (preferred) { if (preferred) {