summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarsten Loesing <karsten.loesing@gmx.net>2010-06-21 10:13:17 +0200
committerKarsten Loesing <karsten.loesing@gmx.net>2010-07-05 10:45:24 +0200
commit6bb8747ffbd18e08f9724bb8e4f2a16f22ed6612 (patch)
tree5afd882190b1b27dbe3688290c7524c506d4502a
parent741ab2a47abeba41223b908a71f10c80d6c18b6e (diff)
downloadtor-6bb8747ffbd18e08f9724bb8e4f2a16f22ed6612.tar.gz
tor-6bb8747ffbd18e08f9724bb8e4f2a16f22ed6612.zip
Make directory mirrors report non-zero dirreq-v[23]-shares again.
-rw-r--r--changes/bug15644
-rw-r--r--src/or/routerlist.c11
2 files changed, 14 insertions, 1 deletions
diff --git a/changes/bug1564 b/changes/bug1564
new file mode 100644
index 0000000000..cee3966331
--- /dev/null
+++ b/changes/bug1564
@@ -0,0 +1,4 @@
+ o Minor bugfixes
+ - Make directory mirrors report non-zero dirreq-v[23]-shares again.
+ Fixes bug 1564; bugfix on 0.2.2.9-alpha.
+
diff --git a/src/or/routerlist.c b/src/or/routerlist.c
index f4db40d25f..8d403def36 100644
--- a/src/or/routerlist.c
+++ b/src/or/routerlist.c
@@ -1652,7 +1652,7 @@ smartlist_choose_by_bandwidth_weights(smartlist_t *sl,
// Cycle through smartlist and total the bandwidth.
for (i = 0; i < (unsigned)smartlist_len(sl); ++i) {
- int is_exit = 0, is_guard = 0, is_dir = 0, this_bw = 0;
+ int is_exit = 0, is_guard = 0, is_dir = 0, this_bw = 0, is_me = 0;
double weight = 1;
if (statuses) {
routerstatus_t *status = smartlist_get(sl, i);
@@ -1669,6 +1669,8 @@ smartlist_choose_by_bandwidth_weights(smartlist_t *sl,
return NULL;
}
this_bw = kb_to_bytes(status->bandwidth);
+ if (router_digest_is_me(status->identity_digest))
+ is_me = 1;
} else {
routerstatus_t *rs;
routerinfo_t *router = smartlist_get(sl, i);
@@ -1682,6 +1684,8 @@ smartlist_choose_by_bandwidth_weights(smartlist_t *sl,
} else { /* bridge or other descriptor not in our consensus */
this_bw = router_get_advertised_bandwidth_capped(router);
}
+ if (router_digest_is_me(router->cache_info.identity_digest))
+ is_me = 1;
}
if (is_guard && is_exit) {
weight = (is_dir ? Wdb*Wd : Wd);
@@ -1695,8 +1699,13 @@ smartlist_choose_by_bandwidth_weights(smartlist_t *sl,
bandwidths[i] = weight*this_bw;
weighted_bw += weight*this_bw;
+ if (is_me)
+ sl_last_weighted_bw_of_me = weight*this_bw;
}
+ /* XXXX022 this is a kludge to expose these values. */
+ sl_last_total_weighted_bw = weighted_bw;
+
log_debug(LD_CIRC, "Choosing node for rule %s based on weights "
"Wg=%lf Wm=%lf We=%lf Wd=%lf with total bw %lf",
bandwidth_weight_rule_to_string(rule),