[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[or-cvs] [tor/master] don't div by 0 during path selection
Author: Roger Dingledine <arma@xxxxxxxxxxxxxx>
Date: Sat, 2 Jan 2010 13:13:30 -0500
Subject: don't div by 0 during path selection
Commit: 8cba62cc2afc661f75b519f0b4ddf7c8892f15a0
---
ChangeLog | 6 +++++-
src/or/routerlist.c | 4 ++--
2 files changed, 7 insertions(+), 3 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index b5dd2fd..84a97c9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,4 @@
-Changes in version 0.2.2.7-alpha - 2009-12-??
+Changes in version 0.2.2.7-alpha - 2010-01-??
o Major features (performance):
- When choosing which cells to relay first, we can now favor circuits
that have been quiet recently, so as to get lower latency for
@@ -67,6 +67,10 @@ Changes in version 0.2.2.7-alpha - 2009-12-??
- Fix statistics on client numbers by country as seen by bridges that
were broken in 0.2.2.1-alpha. Also switch to reporting full 24-hour
intervals instead of variable 12-to-48-hour intervals.
+ - If we're in the pathological case where there's no exit bandwidth
+ but there is non-exit bandwidth, or no guard bandwidth but there
+ is non-guard bandwidth, don't crash during path selection. Bugfix
+ on 0.2.0.3-alpha.
o Removed features:
- Remove the HSAuthorityRecordStats option that version 0 hidden
diff --git a/src/or/routerlist.c b/src/or/routerlist.c
index 029bd9a..72b890b 100644
--- a/src/or/routerlist.c
+++ b/src/or/routerlist.c
@@ -1698,12 +1698,12 @@ smartlist_choose_by_bandwidth(smartlist_t *sl, bandwidth_weight_rule_t rule,
* For detailed derivation of this formula, see
* http://archives.seul.org/or/dev/Jul-2007/msg00056.html
*/
- if (rule == WEIGHT_FOR_EXIT)
+ if (rule == WEIGHT_FOR_EXIT || !total_exit_bw)
exit_weight = 1.0;
else
exit_weight = 1.0 - all_bw/(3.0*exit_bw);
- if (rule == WEIGHT_FOR_GUARD)
+ if (rule == WEIGHT_FOR_GUARD || !total_guard_bw)
guard_weight = 1.0;
else
guard_weight = 1.0 - all_bw/(3.0*guard_bw);
--
1.5.6.5