diff options
author | Nick Mathewson <nickm@torproject.org> | 2018-06-20 08:32:34 -0400 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2018-06-20 08:32:34 -0400 |
commit | d7301a456ab15ab84030b6e0fcf5a6fbd9e43fa9 (patch) | |
tree | ba7ea25540b279dc04b7b89ff01cdab72293e6eb /src/or/routerlist.c | |
parent | e9c93a3415fac4660f3976dfcd7cfd2db5502e58 (diff) | |
parent | 9d7f148885a9334605cfb396bb06ad546349ad6a (diff) | |
download | tor-d7301a456ab15ab84030b6e0fcf5a6fbd9e43fa9.tar.gz tor-d7301a456ab15ab84030b6e0fcf5a6fbd9e43fa9.zip |
Merge remote-tracking branch 'neel/b25886c'
Diffstat (limited to 'src/or/routerlist.c')
-rw-r--r-- | src/or/routerlist.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/or/routerlist.c b/src/or/routerlist.c index 874e4214e6..8bdfbeee1a 100644 --- a/src/or/routerlist.c +++ b/src/or/routerlist.c @@ -2758,10 +2758,15 @@ compute_weighted_bandwidths(const smartlist_t *sl, /** For all nodes in <b>sl</b>, return the fraction of those nodes, weighted * by their weighted bandwidths with rule <b>rule</b>, for which we have - * descriptors. */ + * descriptors. + * + * If <b>for_direct_connect</b> is true, we intend to connect to the node + * directly, as the first hop of a circuit; otherwise, we intend to connect + * to it indirectly, or use it as if we were connecting to it indirectly. */ double frac_nodes_with_descriptors(const smartlist_t *sl, - bandwidth_weight_rule_t rule) + bandwidth_weight_rule_t rule, + int for_direct_conn) { double *bandwidths = NULL; double total, present; @@ -2773,7 +2778,7 @@ frac_nodes_with_descriptors(const smartlist_t *sl, total <= 0.0) { int n_with_descs = 0; SMARTLIST_FOREACH(sl, const node_t *, node, { - if (node_has_any_descriptor(node)) + if (node_has_preferred_descriptor(node, for_direct_conn)) n_with_descs++; }); return ((double)n_with_descs) / smartlist_len(sl); @@ -2781,7 +2786,7 @@ frac_nodes_with_descriptors(const smartlist_t *sl, present = 0.0; SMARTLIST_FOREACH_BEGIN(sl, const node_t *, node) { - if (node_has_any_descriptor(node)) + if (node_has_preferred_descriptor(node, for_direct_conn)) present += bandwidths[node_sl_idx]; } SMARTLIST_FOREACH_END(node); |