Просмотр исходного кода

Fix 0/0 calculation in get_weighted_fractional_uptime().

svn:r16994
Nick Mathewson 17 лет назад
Родитель
Сommit
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
       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;
 }
 }