Commit fdbefc89 authored by Roger Dingledine's avatar Roger Dingledine
Browse files

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
parent 426a9bbd
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
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:
    - Directory caches now fetch certificates from all authorities
      listed in a networkstatus consensus, even when they do not
+0 −8
Original line number Diff line number Diff line
@@ -1577,10 +1577,6 @@ choose_good_middle_server(uint8_t purpose,
    smartlist_add(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) {
    if ((r = router_get_by_digest(cpath->extend_info->identity_digest))) {
      smartlist_add(excluded, r);
@@ -1624,10 +1620,6 @@ choose_good_entry_server(uint8_t purpose, cpath_build_state_t *state)
    smartlist_add(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()) {
    /* exclude all ORs that listen on the wrong port */
    routerlist_t *rl = router_get_routerlist();
+6 −1
Original line number Diff line number Diff line
@@ -1659,7 +1659,7 @@ router_choose_random_node(const char *preferred,
                          int weight_for_exit)
{
  smartlist_t *sl, *excludednodes;
  routerinfo_t *choice = NULL;
  routerinfo_t *choice = NULL, *r;
  bandwidth_weight_rule_t rule;

  tor_assert(!(weight_for_exit && need_guard));
@@ -1669,6 +1669,11 @@ router_choose_random_node(const char *preferred,
  excludednodes = smartlist_create();
  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
   * and need_guard, since the user explicitly asked for these nodes. */
  if (preferred) {