]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
Make directory mirrors report non-zero dirreq-v[23]-shares again.
authorKarsten Loesing <karsten.loesing@gmx.net>
Mon, 21 Jun 2010 08:13:17 +0000 (10:13 +0200)
committerKarsten Loesing <karsten.loesing@gmx.net>
Mon, 5 Jul 2010 08:45:24 +0000 (10:45 +0200)
changes/bug1564 [new file with mode: 0644]
src/or/routerlist.c

diff --git a/changes/bug1564 b/changes/bug1564
new file mode 100644 (file)
index 0000000..cee3966
--- /dev/null
@@ -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.
+
index f4db40d25f924c5f49f87c91c923d271eb6db04a..8d403def365c1b42e2fb56ad1003071da927ad53 100644 (file)
@@ -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),