diff --git a/changes/no_reachability_test_on_startup b/changes/no_reachability_test_on_startup
new file mode 100644
index 0000000000..e6a57a0d60
--- /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 ad96e7670f..8b215011f3 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 try_all 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 fp which is either set if we're looking for a
diff --git a/src/or/main.c b/src/or/main.c
index 74075b6257..82f6e84a74 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 71a9ff73d9..ad863dc68b 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);