Pārlūkot izejas kodu

try dirport reachability testing five times less often.
it's already so darn thorough per test -- it chews through
like four circuits before giving up.


svn:r8646

Roger Dingledine 17 gadi atpakaļ
vecāks
revīzija
538c54e376
2 mainītis faili ar 6 papildinājumiem un 4 dzēšanām
  1. 0 2
      src/or/dirserv.c
  2. 6 2
      src/or/main.c

+ 0 - 2
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. */

+ 6 - 2
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. */