diff options
author | Roger Dingledine <arma@torproject.org> | 2010-04-21 04:27:56 -0400 |
---|---|---|
committer | Roger Dingledine <arma@torproject.org> | 2010-04-21 04:27:56 -0400 |
commit | 6952b445cc121148eed87a12536cec8522f7d136 (patch) | |
tree | c3013f478db65b96296ed7ae8f2db03215507d6b | |
parent | 4f307e038272e368cd307ffa5e31b568b0729c48 (diff) | |
download | tor-6952b445cc121148eed87a12536cec8522f7d136.tar tor-6952b445cc121148eed87a12536cec8522f7d136.tar.gz |
stop authority reachability check on startup
-rw-r--r-- | changes/no_reachability_test_on_startup | 6 | ||||
-rw-r--r-- | src/or/dirserv.c | 10 | ||||
-rw-r--r-- | src/or/main.c | 7 | ||||
-rw-r--r-- | src/or/or.h | 2 |
4 files changed, 12 insertions, 13 deletions
diff --git a/changes/no_reachability_test_on_startup b/changes/no_reachability_test_on_startup new file mode 100644 index 000000000..e6a57a0d6 --- /dev/null +++ b/changes/no_reachability_test_on_startup @@ -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. diff --git a/src/or/dirserv.c b/src/or/dirserv.c index ad96e7670..8b215011f 100644 --- a/src/or/dirserv.c +++ b/src/or/dirserv.c @@ -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 diff --git a/src/or/main.c b/src/or/main.c index 74075b625..82f6e84a7 100644 --- a/src/or/main.c +++ b/src/or/main.c @@ -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(); diff --git a/src/or/or.h b/src/or/or.h index 71a9ff73d..ad863dc68 100644 --- a/src/or/or.h +++ b/src/or/or.h @@ -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); |