diff options
author | Roger Dingledine <arma@torproject.org> | 2006-10-07 02:55:44 +0000 |
---|---|---|
committer | Roger Dingledine <arma@torproject.org> | 2006-10-07 02:55:44 +0000 |
commit | 4f3827f1d1365fa8da9f014463d8f3e6acce6b6c (patch) | |
tree | 7bad004d336b590fab22dc5cd176b3b49e0c8f0b | |
parent | e63211fad3274adf6b23388f70991bca1c2a49ff (diff) | |
download | tor-4f3827f1d1365fa8da9f014463d8f3e6acce6b6c.tar.gz tor-4f3827f1d1365fa8da9f014463d8f3e6acce6b6c.zip |
resolve the entryguard uptime/capacity question. and mark a
new xxx that we'll want to address one day.
svn:r8628
-rw-r--r-- | src/or/circuitbuild.c | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/src/or/circuitbuild.c b/src/or/circuitbuild.c index 9b2fd5bc41..0edb53367c 100644 --- a/src/or/circuitbuild.c +++ b/src/or/circuitbuild.c @@ -1842,6 +1842,8 @@ entry_is_time_to_retry(entry_guard_t *e, time_t now) * - Present in the routerlist; * - Listed as 'stable' or 'fast' by the current dirserver concensus, * if demanded by <b>need_uptime</b> or <b>need_capacity</b>; + * (This check is currently redundant with the Guard flag, but in + * the future that might change. Best to leave it in for now.) * - Allowed by our current ReachableAddresses config option; and * - Currently thought to be reachable by us (unless assume_reachable * is true). @@ -1859,7 +1861,6 @@ entry_is_live(entry_guard_t *e, int need_uptime, int need_capacity, r = router_get_by_digest(e->identity); if (!r) return NULL; - /* Remove this check -- it seems redundant wrt the Guard flag? XXXX NM */ if (router_is_unreliable(r, need_uptime, need_capacity, 0)) return NULL; if (firewall_is_fascist_or() && @@ -2272,22 +2273,25 @@ choose_random_entry(cpath_build_state_t *state) * using him. * (We might get 2 live-but-crummy entry guards, but so be it.) */ if (smartlist_len(live_entry_guards) < 2) { - if (need_uptime) { - need_uptime = 0; /* try without that requirement */ - goto retry; - } if (!options->StrictEntryNodes) { /* still no? try adding a new entry then */ + /* XXX if guard doesn't imply fast and stable, then we need + * to tell add_an_entry_guard below what we want, or it might + * be a long time til we get it. -RD */ r = add_an_entry_guard(NULL); if (r) { smartlist_add(live_entry_guards, r); entry_guards_changed(); } } + if (!r && need_uptime) { + need_uptime = 0; /* try without that requirement */ + goto retry; + } if (!r && need_capacity) { - /* still no? last attempt, try without requiring capacity */ - need_capacity = 0; - goto retry; + /* still no? last attempt, try without requiring capacity */ + need_capacity = 0; + goto retry; } /* live_entry_guards will be empty below. Oh well, we tried. */ } |