[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[or-cvs] r10730: If there's a never-before-connected-to guard node in our lis (in tor/trunk: . src/or)
Author: arma
Date: 2007-07-02 18:15:26 -0400 (Mon, 02 Jul 2007)
New Revision: 10730
Modified:
tor/trunk/ChangeLog
tor/trunk/src/or/circuitbuild.c
Log:
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.
Modified: tor/trunk/ChangeLog
===================================================================
--- tor/trunk/ChangeLog 2007-07-02 22:07:53 UTC (rev 10729)
+++ tor/trunk/ChangeLog 2007-07-02 22:15:26 UTC (rev 10730)
@@ -50,7 +50,12 @@
- 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:
- Fix an assertion failure related to servers without extra-info digests.
Modified: tor/trunk/src/or/circuitbuild.c
===================================================================
--- tor/trunk/src/or/circuitbuild.c 2007-07-02 22:07:53 UTC (rev 10729)
+++ tor/trunk/src/or/circuitbuild.c 2007-07-02 22:15:26 UTC (rev 10730)
@@ -2418,6 +2418,13 @@
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 @@
/* 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);