|
@@ -1843,7 +1843,7 @@ select_entry_guard_for_circuit(guard_selection_t *gs,
|
|
|
if (! entry_guard_obeys_restriction(guard, rst))
|
|
|
continue;
|
|
|
if (guard->is_reachable != GUARD_REACHABLE_NO) {
|
|
|
- if (need_descriptor && BUG(!guard_has_descriptor(guard))) {
|
|
|
+ if (need_descriptor && !guard_has_descriptor(guard)) {
|
|
|
continue;
|
|
|
}
|
|
|
*state_out = GUARD_CIRC_STATE_USABLE_ON_COMPLETION;
|
|
@@ -3357,9 +3357,15 @@ guard_selection_have_enough_dir_info_to_build_circuits(guard_selection_t *gs)
|
|
|
if (!gs->primary_guards_up_to_date)
|
|
|
entry_guards_update_primary(gs);
|
|
|
|
|
|
- const int num_primary = get_n_primary_guards_to_use(GUARD_USAGE_TRAFFIC);
|
|
|
int n_missing_descriptors = 0;
|
|
|
int n_considered = 0;
|
|
|
+ int num_primary_to_check;
|
|
|
+
|
|
|
+
|
|
|
+ * guards in our list, since these are the guards that we typically use for
|
|
|
+ * circuits. */
|
|
|
+ num_primary_to_check = get_n_primary_guards_to_use(GUARD_USAGE_TRAFFIC);
|
|
|
+ num_primary_to_check++;
|
|
|
|
|
|
SMARTLIST_FOREACH_BEGIN(gs->primary_entry_guards, entry_guard_t *, guard) {
|
|
|
entry_guard_consider_retry(guard);
|
|
@@ -3368,7 +3374,7 @@ guard_selection_have_enough_dir_info_to_build_circuits(guard_selection_t *gs)
|
|
|
n_considered++;
|
|
|
if (!guard_has_descriptor(guard))
|
|
|
n_missing_descriptors++;
|
|
|
- if (n_considered >= num_primary)
|
|
|
+ if (n_considered >= num_primary_to_check)
|
|
|
break;
|
|
|
} SMARTLIST_FOREACH_END(guard);
|
|
|
|