Merge branch 'bug17772_024' into maint-0.2.4

This commit is contained in:
Nick Mathewson 2015-12-08 10:18:31 -05:00
commit 35deb4d442
2 changed files with 15 additions and 2 deletions

7
changes/bug17772 Normal file
View File

@ -0,0 +1,7 @@
o Major bugfixes (guard selection):
- Actually look at the Guard flag when selecting a new directory
guard. When we implemented the directory guard design, we
accidentally started treating all relays as if they have the Guard
flag during guard selection, leading to weaker anonymity and worse
performance. Fixes bug 17222; bugfix on 0.2.4.8-alpha. Discovered
by Mohsen Imani.

View File

@ -1537,8 +1537,14 @@ router_pick_directory_server_impl(dirinfo_type_t type, int flags)
if ((type & MICRODESC_DIRINFO) && !is_trusted && if ((type & MICRODESC_DIRINFO) && !is_trusted &&
!node->rs->version_supports_microdesc_cache) !node->rs->version_supports_microdesc_cache)
continue; continue;
if (for_guard && node->using_as_guard) /* Don't make the same node a guard twice */
continue; /* Don't make the same node a guard twice. */ if (for_guard && node->using_as_guard) {
continue;
}
/* Ensure that a directory guard is actually a guard node. */
if (for_guard && !node->is_possible_guard) {
continue;
}
if (try_excluding && if (try_excluding &&
routerset_contains_routerstatus(options->ExcludeNodes, status, routerset_contains_routerstatus(options->ExcludeNodes, status,
country)) { country)) {