summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/or/dirserv.c2
-rw-r--r--src/or/main.c8
2 files changed, 6 insertions, 4 deletions
diff --git a/src/or/dirserv.c b/src/or/dirserv.c
index 872f2f0652..4a5b1f7e08 100644
--- a/src/or/dirserv.c
+++ b/src/or/dirserv.c
@@ -21,8 +21,6 @@ const char dirserv_c_id[] =
* directory authorities. */
#define MAX_UNTRUSTED_NETWORKSTATUSES 16
-extern long stats_n_seconds_working;
-
typedef enum {
FP_NAMED, /**< Listed in fingerprint file. */
FP_VALID, /**< Unlisted but believed valid. */
diff --git a/src/or/main.c b/src/or/main.c
index e6eda1665f..19e3d7fb25 100644
--- a/src/or/main.c
+++ b/src/or/main.c
@@ -833,6 +833,7 @@ run_scheduled_events(time_t now)
/* 2b. Once per minute, regenerate and upload the descriptor if the old
* one is inaccurate. */
if (time_to_check_descriptor < now) {
+ static int dirport_reachability_count = 0;
time_to_check_descriptor = now + CHECK_DESCRIPTOR_INTERVAL;
check_descriptor_bandwidth_changed(now);
if (time_to_check_ipaddress < now) {
@@ -847,8 +848,11 @@ run_scheduled_events(time_t now)
if (server_mode(options) &&
(has_completed_circuit || !any_predicted_circuits(now)) &&
stats_n_seconds_working < TIMEOUT_UNTIL_UNREACHABILITY_COMPLAINT &&
- !we_are_hibernating())
- consider_testing_reachability(1, 1);
+ !we_are_hibernating()) {
+ consider_testing_reachability(1, dirport_reachability_count==0);
+ if (++dirport_reachability_count > 5)
+ dirport_reachability_count = 0;
+ }
/* If any networkstatus documents are no longer recent, we need to
* update all the descriptors' running status. */