mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-11 05:33:47 +01:00
Don't warn of stray Bridges if managed proxies are still unconfigured.
With managed proxies you would always get the error message: "You have a Bridge line using the X pluggable transport, but there doesn't seem to be a corresponding ClientTransportPlugin line." because the check happened directly after parse_client_transport_line() when managed proxies were not fully configured and their transports were not registered. The fix is to move the validation to run_scheduled_events() and make sure that all managed proxies are configured first.
This commit is contained in:
parent
e8715b3041
commit
d0416ce3ec
@ -4769,11 +4769,14 @@ transport_add_from_config(const tor_addr_t *addr, uint16_t port,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Warns the user of possible pluggable transport misconfiguration. */
|
/** Warn the user of possible pluggable transport misconfiguration.
|
||||||
void
|
* Return 0 if the validation happened, -1 if we should postpone the
|
||||||
|
* validation. */
|
||||||
|
int
|
||||||
validate_pluggable_transports_config(void)
|
validate_pluggable_transports_config(void)
|
||||||
{
|
{
|
||||||
if (bridge_list) {
|
/* Don't validate if managed proxies are not yet fully configured. */
|
||||||
|
if (bridge_list && !pt_proxies_configuration_pending()) {
|
||||||
SMARTLIST_FOREACH_BEGIN(bridge_list, bridge_info_t *, b) {
|
SMARTLIST_FOREACH_BEGIN(bridge_list, bridge_info_t *, b) {
|
||||||
/* Skip bridges without transports. */
|
/* Skip bridges without transports. */
|
||||||
if (!b->transport_name)
|
if (!b->transport_name)
|
||||||
@ -4787,6 +4790,10 @@ validate_pluggable_transports_config(void)
|
|||||||
"corresponding ClientTransportPlugin line.",
|
"corresponding ClientTransportPlugin line.",
|
||||||
b->transport_name);
|
b->transport_name);
|
||||||
} SMARTLIST_FOREACH_END(b);
|
} SMARTLIST_FOREACH_END(b);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
} else {
|
||||||
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -157,7 +157,7 @@ int find_transport_by_bridge_addrport(const tor_addr_t *addr, uint16_t port,
|
|||||||
const transport_t **transport);
|
const transport_t **transport);
|
||||||
transport_t *transport_get_by_name(const char *name);
|
transport_t *transport_get_by_name(const char *name);
|
||||||
|
|
||||||
void validate_pluggable_transports_config(void);
|
int validate_pluggable_transports_config(void);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -1271,11 +1271,6 @@ options_act(or_options_t *old_options)
|
|||||||
sweep_transport_list();
|
sweep_transport_list();
|
||||||
sweep_proxy_list();
|
sweep_proxy_list();
|
||||||
|
|
||||||
/* If we have pluggable transport related options enabled, see if we
|
|
||||||
should warn the user about potential configuration problems. */
|
|
||||||
if (options->Bridges || options->ClientTransportPlugin)
|
|
||||||
validate_pluggable_transports_config();
|
|
||||||
|
|
||||||
/* Bail out at this point if we're not going to be a client or server:
|
/* Bail out at this point if we're not going to be a client or server:
|
||||||
* we want to not fork, and to log stuff to stderr. */
|
* we want to not fork, and to log stuff to stderr. */
|
||||||
if (!running_tor)
|
if (!running_tor)
|
||||||
|
@ -1068,6 +1068,7 @@ run_scheduled_events(time_t now)
|
|||||||
static int should_init_bridge_stats = 1;
|
static int should_init_bridge_stats = 1;
|
||||||
static time_t time_to_retry_dns_init = 0;
|
static time_t time_to_retry_dns_init = 0;
|
||||||
static time_t time_to_next_heartbeat = 0;
|
static time_t time_to_next_heartbeat = 0;
|
||||||
|
static int has_validated_pt = 0;
|
||||||
or_options_t *options = get_options();
|
or_options_t *options = get_options();
|
||||||
int is_server = server_mode(options);
|
int is_server = server_mode(options);
|
||||||
int i;
|
int i;
|
||||||
@ -1472,6 +1473,14 @@ run_scheduled_events(time_t now)
|
|||||||
if (pt_proxies_configuration_pending())
|
if (pt_proxies_configuration_pending())
|
||||||
pt_configure_remaining_proxies();
|
pt_configure_remaining_proxies();
|
||||||
|
|
||||||
|
/** 11c. validate pluggable transports configuration if we need to */
|
||||||
|
if (!has_validated_pt &&
|
||||||
|
(options->Bridges || options->ClientTransportPlugin)) {
|
||||||
|
if (validate_pluggable_transports_config() == 0) {
|
||||||
|
has_validated_pt = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/** 12. write the heartbeat message */
|
/** 12. write the heartbeat message */
|
||||||
if (options->HeartbeatPeriod &&
|
if (options->HeartbeatPeriod &&
|
||||||
time_to_next_heartbeat < now) {
|
time_to_next_heartbeat < now) {
|
||||||
|
Loading…
Reference in New Issue
Block a user