Quick fix on 5956 for authorities

Authorities don't set is_possible_guard on node_t, so they were
never deciding that they could build enough paths.  This is a quick
and dirty fix.

Bug not in any released version of Tor
This commit is contained in:
Nick Mathewson 2013-02-04 12:23:20 -05:00
parent 898f2d7c27
commit 2e9cd4b724

View File

@ -1313,6 +1313,7 @@ compute_frac_paths_available(const networkstatus_t *consensus,
smartlist_t *myexits= smartlist_new();
double f_guard, f_mid, f_exit, f_myexit;
int np, nu; /* Ignored */
const int authdir = authdir_mode_v2(options) || authdir_mode_v3(options);
count_usable_descriptors(num_present_out, num_usable_out,
mid, consensus, options, now, NULL, 0);
@ -1321,8 +1322,13 @@ compute_frac_paths_available(const networkstatus_t *consensus,
options->EntryNodes, 0);
} else {
SMARTLIST_FOREACH(mid, const node_t *, node, {
if (node->is_possible_guard)
smartlist_add(guards, (node_t*)node);
if (authdir) {
if (node->rs && node->rs->is_possible_guard)
smartlist_add(guards, (node_t*)node);
} else {
if (node->is_possible_guard)
smartlist_add(guards, (node_t*)node);
}
});
}