mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-24 12:23:32 +01:00
Merge branch 'maint-0.4.5'
This commit is contained in:
commit
f75baf5ea5
@ -2,4 +2,7 @@
|
|||||||
- Remove a spammy log notice that should not have been indicating the
|
- Remove a spammy log notice that should not have been indicating the
|
||||||
operator that its IPv4/v6 was missing but it was not. Fixes bug 40300;
|
operator that its IPv4/v6 was missing but it was not. Fixes bug 40300;
|
||||||
bugfix on 0.4.5.1-alpha.
|
bugfix on 0.4.5.1-alpha.
|
||||||
|
- Do not query the address cache early in the boot process when deciding
|
||||||
|
if we a relay needs to fetch early directory information from an
|
||||||
|
authority. This resulted in a relay falsely believing it didn't have an
|
||||||
|
address and thus triggering an authority fetch at each boot.
|
||||||
|
@ -45,14 +45,6 @@ dirclient_fetches_from_authorities(const or_options_t *options)
|
|||||||
return 1;
|
return 1;
|
||||||
if (options->BridgeRelay == 1)
|
if (options->BridgeRelay == 1)
|
||||||
return 0;
|
return 0;
|
||||||
/* We don't know our IP address; ask an authority. IPv4 is still mandatory
|
|
||||||
* to have thus if we don't have it, we ought to learn it from an authority
|
|
||||||
* through the NETINFO cell or the HTTP header it sends us back.
|
|
||||||
*
|
|
||||||
* Note that at the moment, relay do a direct connection so no NETINFO cell
|
|
||||||
* for now. */
|
|
||||||
if (server_mode(options) && !relay_has_address_set(AF_INET))
|
|
||||||
return 1;
|
|
||||||
refuseunknown = ! router_my_exit_policy_is_reject_star() &&
|
refuseunknown = ! router_my_exit_policy_is_reject_star() &&
|
||||||
should_refuse_unknown_exits(options);
|
should_refuse_unknown_exits(options);
|
||||||
if (!dir_server_mode(options) && !refuseunknown)
|
if (!dir_server_mode(options) && !refuseunknown)
|
||||||
|
@ -162,7 +162,8 @@ relay_find_addr_to_publish, (const or_options_t *options, int family,
|
|||||||
"explicit address or set Address.",
|
"explicit address or set Address.",
|
||||||
fmt_af_family(family),
|
fmt_af_family(family),
|
||||||
routerconf_find_or_port(options, family),
|
routerconf_find_or_port(options, family),
|
||||||
fmt_af_family(family));
|
(family == AF_INET) ? fmt_af_family(AF_INET6) :
|
||||||
|
fmt_af_family(AF_INET));
|
||||||
|
|
||||||
/* Not found. */
|
/* Not found. */
|
||||||
return false;
|
return false;
|
||||||
@ -171,18 +172,6 @@ relay_find_addr_to_publish, (const or_options_t *options, int family,
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Return true iff this relay has an address set for the given family.
|
|
||||||
*
|
|
||||||
* This only checks the caches so it will not trigger a full discovery of the
|
|
||||||
* address. */
|
|
||||||
bool
|
|
||||||
relay_has_address_set(int family)
|
|
||||||
{
|
|
||||||
tor_addr_t addr;
|
|
||||||
return relay_find_addr_to_publish(get_options(), family,
|
|
||||||
RELAY_FIND_ADDR_CACHE_ONLY, &addr);
|
|
||||||
}
|
|
||||||
|
|
||||||
/** How often should we launch a circuit to an authority to be sure of getting
|
/** How often should we launch a circuit to an authority to be sure of getting
|
||||||
* a guess for our IP? */
|
* a guess for our IP? */
|
||||||
#define DUMMY_DOWNLOAD_INTERVAL (20*60)
|
#define DUMMY_DOWNLOAD_INTERVAL (20*60)
|
||||||
|
@ -22,8 +22,6 @@ MOCK_DECL(bool, relay_find_addr_to_publish,
|
|||||||
(const or_options_t *options, int family, int flags,
|
(const or_options_t *options, int family, int flags,
|
||||||
tor_addr_t *addr_out));
|
tor_addr_t *addr_out));
|
||||||
|
|
||||||
bool relay_has_address_set(int family);
|
|
||||||
|
|
||||||
void relay_addr_learn_from_dirauth(void);
|
void relay_addr_learn_from_dirauth(void);
|
||||||
|
|
||||||
#ifdef RELAY_FIND_ADDR_PRIVATE
|
#ifdef RELAY_FIND_ADDR_PRIVATE
|
||||||
|
@ -3980,27 +3980,6 @@ test_config_directory_fetch(void *arg)
|
|||||||
tt_int_op(networkstatus_consensus_can_use_multiple_directories(options),
|
tt_int_op(networkstatus_consensus_can_use_multiple_directories(options),
|
||||||
OP_EQ, 1);
|
OP_EQ, 1);
|
||||||
|
|
||||||
/* OR servers only fetch the consensus from the authorities when they don't
|
|
||||||
* know their own address, but never use multiple directories for bootstrap
|
|
||||||
*/
|
|
||||||
or_options_free(options);
|
|
||||||
options = options_new();
|
|
||||||
options->ORPort_set = 1;
|
|
||||||
|
|
||||||
mock_relay_find_addr_to_publish_result = false;
|
|
||||||
tt_assert(server_mode(options) == 1);
|
|
||||||
tt_assert(public_server_mode(options) == 1);
|
|
||||||
tt_int_op(dirclient_fetches_from_authorities(options), OP_EQ, 1);
|
|
||||||
tt_int_op(networkstatus_consensus_can_use_multiple_directories(options),
|
|
||||||
OP_EQ, 0);
|
|
||||||
|
|
||||||
mock_relay_find_addr_to_publish_result = true;
|
|
||||||
tt_assert(server_mode(options) == 1);
|
|
||||||
tt_assert(public_server_mode(options) == 1);
|
|
||||||
tt_int_op(dirclient_fetches_from_authorities(options), OP_EQ, 0);
|
|
||||||
tt_int_op(networkstatus_consensus_can_use_multiple_directories(options),
|
|
||||||
OP_EQ, 0);
|
|
||||||
|
|
||||||
/* Exit OR servers only fetch the consensus from the authorities when they
|
/* Exit OR servers only fetch the consensus from the authorities when they
|
||||||
* refuse unknown exits, but never use multiple directories for bootstrap
|
* refuse unknown exits, but never use multiple directories for bootstrap
|
||||||
*/
|
*/
|
||||||
|
Loading…
Reference in New Issue
Block a user