Commit 99bfb1be authored by Roger Dingledine's avatar Roger Dingledine
Browse files

If there's a never-before-connected-to guard node in our list,

never choose any guards past it. This way we don't expand our 
guard list unless we need to. [Bugfix in 0.1.2.x]

I'm not sure if this will solve all our problems, but it is at least
something.



svn:r10730
parent 5c1daed3
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -50,6 +50,11 @@ Changes in version 0.2.0.3-alpha - 2007-??-??
    - Stop under-counting the number of authorities that recommend each
      version. [Bugfix on 0.1.2.x]

  o Minor bugfixes (guard nodes):
    - If there's a never-before-connected-to guard node in our list,
      never choose any guards past it. This way we don't expand our
      guard list unless we need to. [Bugfix in 0.1.2.x]


Changes in version 0.2.0.2-alpha - 2007-06-02
  o Major bugfixes on 0.2.0.1-alpha:
+8 −0
Original line number Diff line number Diff line
@@ -2418,6 +2418,13 @@ choose_random_entry(cpath_build_state_t *state)
      r = entry_is_live(entry, need_uptime, need_capacity, 0);
      if (r && !smartlist_isin(exit_family, r)) {
        smartlist_add(live_entry_guards, r);
        if (!entry->made_contact) {
          /* Always start with the first not-yet-contacted entry
           * guard. Otherwise we might add several new ones, pick
           * the second new one, and now we've expanded our entry
           * guard list without needing to. */
          goto choose_and_finish;
        }
        if (smartlist_len(live_entry_guards) >= options->NumEntryGuards)
          break; /* we have enough */
      }
@@ -2451,6 +2458,7 @@ choose_random_entry(cpath_build_state_t *state)
    /* live_entry_guards may be empty below. Oh well, we tried. */
  }

 choose_and_finish:
  r = smartlist_choose(live_entry_guards);
  smartlist_free(live_entry_guards);
  smartlist_free(exit_family);