diff options
author | Roger Dingledine <arma@torproject.org> | 2014-07-24 16:23:08 -0400 |
---|---|---|
committer | Roger Dingledine <arma@torproject.org> | 2014-07-24 16:23:08 -0400 |
commit | a4c641cce91acb673f81db2b6093fde425039eaf (patch) | |
tree | 80ab630220e7565788719f359b495f5f70246713 /src/or/entrynodes.c | |
parent | 5c200d9be28ac9e53caac333ddd334539524d9e1 (diff) | |
parent | 71c62b15ca809105cbba0bf2fa86484793701b64 (diff) | |
download | tor-a4c641cce91acb673f81db2b6093fde425039eaf.tar.gz tor-a4c641cce91acb673f81db2b6093fde425039eaf.zip |
Merge branch 'maint-0.2.4' into maint-0.2.5
Diffstat (limited to 'src/or/entrynodes.c')
-rw-r--r-- | src/or/entrynodes.c | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/src/or/entrynodes.c b/src/or/entrynodes.c index 957217ac6c..66b7201187 100644 --- a/src/or/entrynodes.c +++ b/src/or/entrynodes.c @@ -440,9 +440,20 @@ add_an_entry_guard(const node_t *chosen, int reset_status, int prepend, static int decide_num_guards(const or_options_t *options, int for_directory) { - if (for_directory && options->NumDirectoryGuards != 0) - return options->NumDirectoryGuards; - return options->NumEntryGuards; + if (for_directory) { + int answer; + if (options->NumDirectoryGuards != 0) + return options->NumDirectoryGuards; + answer = networkstatus_get_param(NULL, "NumDirectoryGuards", 0, 0, 10); + if (answer) /* non-zero means use the consensus value */ + return answer; + } + + if (options->NumEntryGuards) + return options->NumEntryGuards; + + /* Use the value from the consensus, or 3 if no guidance. */ + return networkstatus_get_param(NULL, "NumEntryGuards", 3, 1, 10); } /** If the use of entry guards is configured, choose more entry guards @@ -841,6 +852,7 @@ entry_guards_set_from_config(const or_options_t *options) { smartlist_t *entry_nodes, *worse_entry_nodes, *entry_fps; smartlist_t *old_entry_guards_on_list, *old_entry_guards_not_on_list; + const int numentryguards = decide_num_guards(options, 0); tor_assert(entry_guards); should_add_entry_nodes = 0; @@ -909,7 +921,7 @@ entry_guards_set_from_config(const or_options_t *options) /* Next, the rest of EntryNodes */ SMARTLIST_FOREACH_BEGIN(entry_nodes, const node_t *, node) { add_an_entry_guard(node, 0, 0, 1, 0); - if (smartlist_len(entry_guards) > options->NumEntryGuards * 10) + if (smartlist_len(entry_guards) > numentryguards * 10) break; } SMARTLIST_FOREACH_END(node); log_notice(LD_GENERAL, "%d entries in guards", smartlist_len(entry_guards)); |