Refactor common code out of reachability checks

No actual changes in behavior
This commit is contained in:
teor (Tim Wilson-Brown) 2016-04-28 11:18:26 +10:00
parent d3c60f2bd7
commit b51316c0e7

View File

@ -1079,24 +1079,51 @@ router_reset_reachability(void)
can_reach_or_port = can_reach_dir_port = 0;
}
/** Return 1 if ORPort is known reachable; else return 0. */
/** Return 1 if we won't do reachability checks, because:
* - AssumeReachable is set, or
* - the network is disabled.
* Otherwise, return 0.
*/
static int
router_reachability_checks_disabled(const or_options_t *options)
{
return options->AssumeReachable ||
net_is_disabled();
}
/** Return 0 if we need to do an ORPort reachability check, because:
* - no reachability check has been done yet, or
* - we've initiated reachability checks, but none have succeeded.
* Return 1 if we don't need to do an ORPort reachability check, because:
* - we've seen a successful reachability check, or
* - AssumeReachable is set, or
* - the network is disabled.
*/
int
check_whether_orport_reachable(void)
{
const or_options_t *options = get_options();
return options->AssumeReachable ||
net_is_disabled() ||
int reach_checks_disabled = router_reachability_checks_disabled(options);
return reach_checks_disabled ||
can_reach_or_port;
}
/** Return 1 if we don't have a dirport configured, or if it's reachable. */
/** Return 0 if we need to do a DirPort reachability check, because:
* - no reachability check has been done yet, or
* - we've initiated reachability checks, but none have succeeded.
* Return 1 if we don't need to do a DirPort reachability check, because:
* - we've seen a successful reachability check, or
* - there is no DirPort set, or
* - AssumeReachable is set, or
* - the network is disabled.
*/
int
check_whether_dirport_reachable(void)
{
const or_options_t *options = get_options();
return !options->DirPort_set ||
options->AssumeReachable ||
net_is_disabled() ||
int reach_checks_disabled = router_reachability_checks_disabled(options) ||
!options->DirPort_set;
return reach_checks_disabled ||
can_reach_dir_port;
}