Browse Source

Fix 0/0 calculation in get_weighted_fractional_uptime().

svn:r16994
Nick Mathewson 17 years ago
parent
commit
99755f374d
2 changed files with 10 additions and 0 deletions
  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
       directory writes.  Previously, we had only counted this when we
       had met our limits precisely. Fixes bug 824. Patch from by rovv.
       had met our limits precisely. Fixes bug 824. Patch from by rovv.
       Bugfix on 0.2.0.x (??).
       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):
   o Minor bugfixes (controller):
     - Make DNS resolved events into "CLOSED", not "FAILED".  Bugfix on
     - 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) {
   } else if (hist->start_of_downtime) {
     total += (when - 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;
   return ((double) up) / total;
 }
 }