Browse Source

r16248@catbus: nickm | 2007-10-28 19:42:14 -0400
Do not count a server as having any WFU until we have known about it for 18 hours (weighted).


svn:r12261

Nick Mathewson 18 years ago
parent
commit
30e73f3a5e
2 changed files with 7 additions and 0 deletions
  1. 2 0
      ChangeLog
  2. 5 0
      src/or/rephist.c

+ 2 - 0
ChangeLog

@@ -23,6 +23,8 @@ Changes in version 0.2.0.10-alpha - 2007-1?-??
     - Directory authorities now decide whether routers are stable enough to
     - Directory authorities now decide whether routers are stable enough to
       be guards based not on their MTBF or their uptime, but on their
       be guards based not on their MTBF or their uptime, but on their
       fractional uptime: the fraction of the time that they are online.
       fractional uptime: the fraction of the time that they are online.
+      (No router counts as having uptime until we've known about it for
+      at least 24 hours.)
     - Clients new hold circuitless TLS connections open for 1.5 times
     - Clients new hold circuitless TLS connections open for 1.5 times
       MaxCircuitDirtiness, since it is likely that they'll need to build
       MaxCircuitDirtiness, since it is likely that they'll need to build
       a circuit over them within that timeframe.  Previously, they held them
       a circuit over them within that timeframe.  Previously, they held them

+ 5 - 0
src/or/rephist.c

@@ -384,6 +384,9 @@ get_stability(or_history_t *hist, time_t when)
   return total / total_weights;
   return total / total_weights;
 }
 }
 
 
+/* Until we've known about you for this long, you simply can't be up. */
+#define MIN_WEIGHTED_TIME_TO_BE_UP (18*60*60)
+
 /** Helper: Return the weighted percent-of-time-online of the router with
 /** Helper: Return the weighted percent-of-time-online of the router with
  * history <b>hist</b>. */
  * history <b>hist</b>. */
 static double
 static double
@@ -399,6 +402,8 @@ get_weighted_fractional_uptime(or_history_t *hist, time_t when)
   } else if (hist->start_of_downtime) {
   } else if (hist->start_of_downtime) {
     total += (when - hist->start_of_downtime);
     total += (when - hist->start_of_downtime);
   }
   }
+  if (total < MIN_WEIGHTED_TIME_TO_BE_UP)
+    return 0.0;
   return ((double) up) / total;
   return ((double) up) / total;
 }
 }