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
This commit is contained in:
Roger Dingledine 2007-07-02 22:15:26 +00:00
parent 5c1daed3ad
commit 99bfb1bebe
2 changed files with 13 additions and 0 deletions

View File

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

View File

@ -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);