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; 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 int
check_whether_orport_reachable(void) check_whether_orport_reachable(void)
{ {
const or_options_t *options = get_options(); const or_options_t *options = get_options();
return options->AssumeReachable || int reach_checks_disabled = router_reachability_checks_disabled(options);
net_is_disabled() || return reach_checks_disabled ||
can_reach_or_port; 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 int
check_whether_dirport_reachable(void) check_whether_dirport_reachable(void)
{ {
const or_options_t *options = get_options(); const or_options_t *options = get_options();
return !options->DirPort_set || int reach_checks_disabled = router_reachability_checks_disabled(options) ||
options->AssumeReachable || !options->DirPort_set;
net_is_disabled() || return reach_checks_disabled ||
can_reach_dir_port; can_reach_dir_port;
} }