From 1fc3e291083493bd7517901f467a7341d5c6f650 Mon Sep 17 00:00:00 2001 From: Nick Mathewson Date: Thu, 13 Oct 2016 09:16:40 -0400 Subject: [PATCH] Remove duplicate code that checks for default authorities Patch from ericho. Fixes 18529. Simple refactoring. --- src/or/config.c | 2 +- src/or/config.h | 10 ++++++++++ src/or/router.c | 3 +-- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/or/config.c b/src/or/config.c index 93e753bb49..bef81ab812 100644 --- a/src/or/config.c +++ b/src/or/config.c @@ -2471,7 +2471,7 @@ resolve_my_address(int warn_severity, const or_options_t *options, addr_string = tor_dup_ip(addr); if (tor_addr_is_internal(&myaddr, 0)) { /* make sure we're ok with publishing an internal IP */ - if (!options->DirAuthorities && !options->AlternateDirAuthority) { + if (is_default_dir_authorities(options)) { /* if they are using the default authorities, disallow internal IPs * always. */ log_fn(warn_severity, LD_CONFIG, diff --git a/src/or/config.h b/src/or/config.h index 208659acb7..1b40efc5ec 100644 --- a/src/or/config.h +++ b/src/or/config.h @@ -76,6 +76,8 @@ MOCK_DECL(char *, #define get_datadir_fname_suffix(sub1, suffix) \ get_datadir_fname2_suffix((sub1), NULL, (suffix)) +inline int is_default_dir_authorities(const or_options_t *options); + int check_or_create_data_subdir(const char *subdir); int write_to_data_subdir(const char* subdir, const char* fname, const char* str, const char* descr); @@ -147,6 +149,14 @@ smartlist_t *get_options_from_transport_options_line(const char *line, const char *transport); smartlist_t *get_options_for_server_transport(const char *transport); +/* Check if we are using default authorities */ +inline int +is_default_dir_authorities(const or_options_t *options) +{ + return (!options->DirAuthorities && + !options->AlternateDirAuthority) ? 1 : 0; +} + #ifdef CONFIG_PRIVATE #define CL_PORT_NO_STREAM_OPTIONS (1u<<0) diff --git a/src/or/router.c b/src/or/router.c index b93b7c1a13..287bc1691e 100644 --- a/src/or/router.c +++ b/src/or/router.c @@ -2093,8 +2093,7 @@ router_build_fresh_descriptor(routerinfo_t **r, extrainfo_t **e) tor_addr_family(&p->addr) == AF_INET6) { /* Like IPv4, if the relay is configured using the default * authorities, disallow internal IPs. Otherwise, allow them. */ - const int default_auth = (!options->DirAuthorities && - !options->AlternateDirAuthority); + const int default_auth = is_default_dir_authorities(options); if (! tor_addr_is_internal(&p->addr, 0) || ! default_auth) { ipv6_orport = p; break;