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 17 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
       be guards based not on their MTBF or their uptime, but on their
       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
       MaxCircuitDirtiness, since it is likely that they'll need to build
       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;
 }
 
+/* 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
  * history <b>hist</b>. */
 static double
@@ -399,6 +402,8 @@ get_weighted_fractional_uptime(or_history_t *hist, time_t when)
   } else if (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;
 }