mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-28 14:23:30 +01:00
Fix unit test failure in dir/formats
options->DirPort is 0 in the unit tests, so
router_get_advertised_dir_port() would return 0 so we wouldn't pick a
dirport. This isn't what we want for the unit tests. Fixes bug
introduced in 95ac3ea594
.
This commit is contained in:
parent
1d8bcba067
commit
df42eb0a18
@ -1952,7 +1952,7 @@ retry_all_listeners(smartlist_t *replaced_conns,
|
|||||||
or_options_t *options = get_options();
|
or_options_t *options = get_options();
|
||||||
int retval = 0;
|
int retval = 0;
|
||||||
const uint16_t old_or_port = router_get_advertised_or_port(options);
|
const uint16_t old_or_port = router_get_advertised_or_port(options);
|
||||||
const uint16_t old_dir_port = router_get_advertised_dir_port(options);
|
const uint16_t old_dir_port = router_get_advertised_dir_port(options, 0);
|
||||||
|
|
||||||
if (retry_listeners(CONN_TYPE_OR_LISTENER, options->ORListenAddress,
|
if (retry_listeners(CONN_TYPE_OR_LISTENER, options->ORListenAddress,
|
||||||
options->ORPort, "0.0.0.0",
|
options->ORPort, "0.0.0.0",
|
||||||
@ -1998,7 +1998,7 @@ retry_all_listeners(smartlist_t *replaced_conns,
|
|||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
if (old_or_port != router_get_advertised_or_port(options) ||
|
if (old_or_port != router_get_advertised_or_port(options) ||
|
||||||
old_dir_port != router_get_advertised_dir_port(options)) {
|
old_dir_port != router_get_advertised_dir_port(options, 0)) {
|
||||||
/* Our chosen ORPort or DirPort is not what it used to be: the
|
/* Our chosen ORPort or DirPort is not what it used to be: the
|
||||||
* descriptor we had (if any) should be regenerated. (We won't
|
* descriptor we had (if any) should be regenerated. (We won't
|
||||||
* automatically notice this because of changes in the option,
|
* automatically notice this because of changes in the option,
|
||||||
|
@ -2705,7 +2705,7 @@ dirserv_generate_networkstatus_vote_obj(crypto_pk_env_t *private_key,
|
|||||||
voter->sigs = smartlist_create();
|
voter->sigs = smartlist_create();
|
||||||
voter->address = hostname;
|
voter->address = hostname;
|
||||||
voter->addr = addr;
|
voter->addr = addr;
|
||||||
voter->dir_port = router_get_advertised_dir_port(options);
|
voter->dir_port = router_get_advertised_dir_port(options, 0);
|
||||||
voter->or_port = router_get_advertised_or_port(options);
|
voter->or_port = router_get_advertised_or_port(options);
|
||||||
voter->contact = tor_strdup(contact);
|
voter->contact = tor_strdup(contact);
|
||||||
if (options->V3AuthUseLegacyKey) {
|
if (options->V3AuthUseLegacyKey) {
|
||||||
@ -2812,7 +2812,8 @@ generate_v2_networkstatus_opinion(void)
|
|||||||
"dir-options%s%s%s%s\n"
|
"dir-options%s%s%s%s\n"
|
||||||
"%s" /* client version line, server version line. */
|
"%s" /* client version line, server version line. */
|
||||||
"dir-signing-key\n%s",
|
"dir-signing-key\n%s",
|
||||||
hostname, ipaddr, (int)router_get_advertised_dir_port(options),
|
hostname, ipaddr,
|
||||||
|
(int)router_get_advertised_dir_port(options, 0),
|
||||||
fingerprint,
|
fingerprint,
|
||||||
contact,
|
contact,
|
||||||
published,
|
published,
|
||||||
|
@ -704,7 +704,7 @@ init_keys(void)
|
|||||||
ds = router_get_trusteddirserver_by_digest(digest);
|
ds = router_get_trusteddirserver_by_digest(digest);
|
||||||
if (!ds) {
|
if (!ds) {
|
||||||
ds = add_trusted_dir_server(options->Nickname, NULL,
|
ds = add_trusted_dir_server(options->Nickname, NULL,
|
||||||
router_get_advertised_dir_port(options),
|
router_get_advertised_dir_port(options, 0),
|
||||||
router_get_advertised_or_port(options),
|
router_get_advertised_or_port(options),
|
||||||
digest,
|
digest,
|
||||||
v3_digest,
|
v3_digest,
|
||||||
@ -802,7 +802,7 @@ decide_to_advertise_dirport(or_options_t *options, uint16_t dir_port)
|
|||||||
return 0;
|
return 0;
|
||||||
if (!check_whether_dirport_reachable())
|
if (!check_whether_dirport_reachable())
|
||||||
return 0;
|
return 0;
|
||||||
if (!router_get_advertised_dir_port(options))
|
if (!router_get_advertised_dir_port(options, dir_port))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
/* Section two: reasons to publish or not publish that the user
|
/* Section two: reasons to publish or not publish that the user
|
||||||
@ -1184,12 +1184,16 @@ router_get_advertised_or_port(or_options_t *options)
|
|||||||
return options->ORPort;
|
return options->ORPort;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Return the port that we should advertise as our DirPort; this is either
|
/** Return the port that we should advertise as our DirPort;
|
||||||
* the one configured in the DirPort option, or the one we actually bound to
|
* this is one of three possibilities:
|
||||||
* if DirPort is "auto". */
|
* The one that is passed as <b>dirport</b> if the DirPort option is 0, or
|
||||||
|
* the one configured in the DirPort option,
|
||||||
|
* or the one we actually bound to if DirPort is "auto". */
|
||||||
uint16_t
|
uint16_t
|
||||||
router_get_advertised_dir_port(or_options_t *options)
|
router_get_advertised_dir_port(or_options_t *options, uint16_t dirport)
|
||||||
{
|
{
|
||||||
|
if (!options->DirPort)
|
||||||
|
return dirport;
|
||||||
if (options->DirPort == CFG_AUTO_PORT) {
|
if (options->DirPort == CFG_AUTO_PORT) {
|
||||||
connection_t *c = connection_get_by_type(CONN_TYPE_DIR_LISTENER);
|
connection_t *c = connection_get_by_type(CONN_TYPE_DIR_LISTENER);
|
||||||
if (c)
|
if (c)
|
||||||
@ -1440,7 +1444,7 @@ router_rebuild_descriptor(int force)
|
|||||||
ri->nickname = tor_strdup(options->Nickname);
|
ri->nickname = tor_strdup(options->Nickname);
|
||||||
ri->addr = addr;
|
ri->addr = addr;
|
||||||
ri->or_port = router_get_advertised_or_port(options);
|
ri->or_port = router_get_advertised_or_port(options);
|
||||||
ri->dir_port = router_get_advertised_dir_port(options);
|
ri->dir_port = router_get_advertised_dir_port(options, 0);
|
||||||
ri->cache_info.published_on = time(NULL);
|
ri->cache_info.published_on = time(NULL);
|
||||||
ri->onion_pkey = crypto_pk_dup_key(get_onion_key()); /* must invoke from
|
ri->onion_pkey = crypto_pk_dup_key(get_onion_key()); /* must invoke from
|
||||||
* main thread */
|
* main thread */
|
||||||
|
@ -51,7 +51,8 @@ int authdir_mode_tests_reachability(or_options_t *options);
|
|||||||
int authdir_mode_bridge(or_options_t *options);
|
int authdir_mode_bridge(or_options_t *options);
|
||||||
|
|
||||||
uint16_t router_get_advertised_or_port(or_options_t *options);
|
uint16_t router_get_advertised_or_port(or_options_t *options);
|
||||||
uint16_t router_get_advertised_dir_port(or_options_t *options);
|
uint16_t router_get_advertised_dir_port(or_options_t *options,
|
||||||
|
uint16_t dirport);
|
||||||
|
|
||||||
int server_mode(or_options_t *options);
|
int server_mode(or_options_t *options);
|
||||||
int public_server_mode(or_options_t *options);
|
int public_server_mode(or_options_t *options);
|
||||||
|
Loading…
Reference in New Issue
Block a user