stop authority reachability check on startup

This commit is contained in:
Roger Dingledine 2010-04-21 04:27:56 -04:00
parent 4f307e0382
commit 6952b445cc
4 changed files with 12 additions and 13 deletions

View File

@ -0,0 +1,6 @@
o Minor features:
- Directory authorities no longer launch a TLS connection to every
relay as they startup. Now that we have 2k+ descriptors cached,
the resulting network hiccup is becoming a burden. Besides,
authorities already avoid voting about Running for the first half
hour of their uptime.

View File

@ -3108,8 +3108,7 @@ dirserv_single_reachability_test(time_t now, routerinfo_t *router)
router->cache_info.identity_digest);
}
/** Auth dir server only: if <b>try_all</b> is 1, launch connections to
* all known routers; else we want to load balance such that we only
/** Auth dir server only: load balance such that we only
* try a few connections per call.
*
* The load balancing is such that if we get called once every ten
@ -3117,7 +3116,7 @@ dirserv_single_reachability_test(time_t now, routerinfo_t *router)
* bit over 20 minutes).
*/
void
dirserv_test_reachability(time_t now, int try_all)
dirserv_test_reachability(time_t now)
{
/* XXX decide what to do here; see or-talk thread "purging old router
* information, revocation." -NM
@ -3140,12 +3139,11 @@ dirserv_test_reachability(time_t now, int try_all)
continue; /* bridge authorities only test reachability on bridges */
// if (router->cache_info.published_on > cutoff)
// continue;
if (try_all || (((uint8_t)id_digest[0]) % 128) == ctr) {
if ((((uint8_t)id_digest[0]) % 128) == ctr) {
dirserv_single_reachability_test(now, router);
}
} SMARTLIST_FOREACH_END(router);
if (!try_all) /* increment ctr */
ctr = (ctr + 1) % 128;
ctr = (ctr + 1) % 128; /* increment ctr */
}
/** Given a fingerprint <b>fp</b> which is either set if we're looking for a

View File

@ -918,7 +918,7 @@ run_scheduled_events(time_t now)
if (now % 10 == 0 && (authdir_mode_tests_reachability(options)) &&
!we_are_hibernating()) {
/* try to determine reachability of the other Tor relays */
dirserv_test_reachability(now, 0);
dirserv_test_reachability(now);
}
/** 1d. Periodically, we discount older stability information so that new
@ -1479,11 +1479,6 @@ do_main_loop(void)
now = time(NULL);
directory_info_has_arrived(now, 1);
if (authdir_mode_tests_reachability(get_options())) {
/* the directory is already here, run startup things */
dirserv_test_reachability(now, 1);
}
if (server_mode(get_options())) {
/* launch cpuworkers. Need to do this *after* we've read the onion key. */
cpu_init();

View File

@ -3914,7 +3914,7 @@ void dirserv_orconn_tls_done(const char *address,
const char *digest_rcvd,
int as_advertised);
void dirserv_single_reachability_test(time_t now, routerinfo_t *router);
void dirserv_test_reachability(time_t now, int try_all);
void dirserv_test_reachability(time_t now);
int authdir_wants_to_reject_router(routerinfo_t *ri, const char **msg,
int complain);
int dirserv_would_reject_router(routerstatus_t *rs);