|
@@ -4583,24 +4583,27 @@ any_pending_bridge_descriptor_fetches(void)
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
-/** Return 1 if we have at least one descriptor for a bridge and
|
|
|
- * all descriptors we know are down. Else return 0. If <b>act</b> is
|
|
|
- * 1, then mark the down bridges up; else just observe and report. */
|
|
|
+/** Return 1 if we have at least one descriptor for an entry guard
|
|
|
+ * (bridge or member of EntryNodes) and all descriptors we know are
|
|
|
+ * down. Else return 0. If <b>act</b> is 1, then mark the down guards
|
|
|
+ * up; else just observe and report. */
|
|
|
static int
|
|
|
-bridges_retry_helper(int act)
|
|
|
+entries_retry_helper(or_options_t *options, int act)
|
|
|
{
|
|
|
routerinfo_t *ri;
|
|
|
int any_known = 0;
|
|
|
int any_running = 0;
|
|
|
+ int purpose = options->UseBridges ?
|
|
|
+ ROUTER_PURPOSE_BRIDGE : ROUTER_PURPOSE_GENERAL;
|
|
|
if (!entry_guards)
|
|
|
entry_guards = smartlist_create();
|
|
|
SMARTLIST_FOREACH(entry_guards, entry_guard_t *, e,
|
|
|
{
|
|
|
ri = router_get_by_digest(e->identity);
|
|
|
- if (ri && ri->purpose == ROUTER_PURPOSE_BRIDGE) {
|
|
|
+ if (ri && ri->purpose == purpose) {
|
|
|
any_known = 1;
|
|
|
if (ri->is_running)
|
|
|
- any_running = 1; /* some bridge is both known and running */
|
|
|
+ any_running = 1; /* some entry is both known and running */
|
|
|
else if (act) { /* mark it for retry */
|
|
|
ri->is_running = 1;
|
|
|
e->can_retry = 1;
|
|
@@ -4613,19 +4616,21 @@ bridges_retry_helper(int act)
|
|
|
return any_known && !any_running;
|
|
|
}
|
|
|
|
|
|
-/** Do we know any descriptors for our bridges, and are they all
|
|
|
- * down? */
|
|
|
+/** Do we know any descriptors for our bridges / entrynodes, and are
|
|
|
+ * all the ones we have descriptors for down? */
|
|
|
int
|
|
|
-bridges_known_but_down(void)
|
|
|
+entries_known_but_down(or_options_t *options)
|
|
|
{
|
|
|
- return bridges_retry_helper(0);
|
|
|
+ tor_assert(entry_list_is_constrained(options));
|
|
|
+ return entries_retry_helper(options, 0);
|
|
|
}
|
|
|
|
|
|
/** Mark all down known bridges up. */
|
|
|
void
|
|
|
-bridges_retry_all(void)
|
|
|
+entries_retry_all(or_options_t *options)
|
|
|
{
|
|
|
- bridges_retry_helper(1);
|
|
|
+ tor_assert(entry_list_is_constrained(options));
|
|
|
+ entries_retry_helper(options, 1);
|
|
|
}
|
|
|
|
|
|
/** Release all storage held by the list of entry guards and related
|