Skip to content

Commit

Permalink
Merge 9d7f148 into 97cc61e
Browse files Browse the repository at this point in the history
  • Loading branch information
neelchauhan committed Jun 16, 2018
2 parents 97cc61e + 9d7f148 commit 70a513c
Show file tree
Hide file tree
Showing 4 changed files with 29 additions and 10 deletions.
7 changes: 7 additions & 0 deletions changes/bug25886
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
o Minor bugfixes (relay):
- In frac_nodes_with_descriptors(), add for_direct_connect, and replace
node_has_any_descriptor() with node_has_preferred_descriptor(). Also,
if we are using bridges and there is at least one bridge with a full
descriptor, set f_guard in compute_frac_paths_available() to 1.0.
Fixes bug 25886; bugfix on 0.3.5.1-alpha. Patch by Neel Chauhan.

16 changes: 11 additions & 5 deletions src/or/nodelist.c
Original file line number Diff line number Diff line change
Expand Up @@ -2213,9 +2213,14 @@ compute_frac_paths_available(const networkstatus_t *consensus,
* browsing (as distinct from hidden service web browsing). */
}

f_guard = frac_nodes_with_descriptors(guards, WEIGHT_FOR_GUARD);
f_mid = frac_nodes_with_descriptors(mid, WEIGHT_FOR_MID);
f_exit = frac_nodes_with_descriptors(exits, WEIGHT_FOR_EXIT);
f_guard = frac_nodes_with_descriptors(guards, WEIGHT_FOR_GUARD, 1);
f_mid = frac_nodes_with_descriptors(mid, WEIGHT_FOR_MID, 0);
f_exit = frac_nodes_with_descriptors(exits, WEIGHT_FOR_EXIT, 0);

/* If we are using bridges and have at least one bridge with a full
* descriptor, assume f_guard is 1.0. */
if (options->UseBridges && num_bridges_usable(0) > 0)
f_guard = 1.0;

log_debug(LD_NET,
"f_guard: %.2f, f_mid: %.2f, f_exit: %.2f",
Expand Down Expand Up @@ -2269,9 +2274,10 @@ compute_frac_paths_available(const networkstatus_t *consensus,
np,
nu);

f_myexit= frac_nodes_with_descriptors(myexits,WEIGHT_FOR_EXIT);
f_myexit= frac_nodes_with_descriptors(myexits, WEIGHT_FOR_EXIT, 0);
f_myexit_unflagged=
frac_nodes_with_descriptors(myexits_unflagged,WEIGHT_FOR_EXIT);
frac_nodes_with_descriptors(myexits_unflagged,
WEIGHT_FOR_EXIT, 0);

log_debug(LD_NET,
"f_exit: %.2f, f_myexit: %.2f, f_myexit_unflagged: %.2f",
Expand Down
13 changes: 9 additions & 4 deletions src/or/routerlist.c
Original file line number Diff line number Diff line change
Expand Up @@ -2746,10 +2746,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;
Expand All @@ -2761,15 +2766,15 @@ 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);
}

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);

Expand Down
3 changes: 2 additions & 1 deletion src/or/routerlist.h
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,8 @@ uint32_t router_get_advertised_bandwidth_capped(const routerinfo_t *router);
const node_t *node_sl_choose_by_bandwidth(const smartlist_t *sl,
bandwidth_weight_rule_t rule);
double frac_nodes_with_descriptors(const smartlist_t *sl,
bandwidth_weight_rule_t rule);
bandwidth_weight_rule_t rule,
int for_direct_conn);

const node_t *router_choose_random_node(smartlist_t *excludedsmartlist,
struct routerset_t *excludedset,
Expand Down

0 comments on commit 70a513c

Please sign in to comment.