Преглед изворни кода

Fix 0/0 calculation in get_weighted_fractional_uptime().

svn:r16994
Nick Mathewson пре 15 година
родитељ
комит
99755f374d
2 измењених фајлова са 10 додато и 0 уклоњено
  1. 2 0
      ChangeLog
  2. 8 0
      src/or/rephist.c

+ 2 - 0
ChangeLog

@@ -66,6 +66,8 @@ Changes in version 0.2.1.6-alpha - 2008-09-xx
       directory writes.  Previously, we had only counted this when we
       had met our limits precisely. Fixes bug 824. Patch from by rovv.
       Bugfix on 0.2.0.x (??).
+    - Avoid a 0/0 calculation when calculating router uptime at directory
+      authorities.  Bugfix on 0.2.0.8-alpha.
 
   o Minor bugfixes (controller):
     - Make DNS resolved events into "CLOSED", not "FAILED".  Bugfix on

+ 8 - 0
src/or/rephist.c

@@ -462,6 +462,14 @@ 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) {
+    /* Avoid calling anybody's uptime infinity (which should be impossible if
+     * the code is working), or NaN (which can happen for any router we haven't
+     * observed up or down yet). */
+    return 0.0;
+  }
+
   return ((double) up) / total;
 }