relay: Disable server transport options when the module is disabled

This commit:
* disables the ExtORPort, ServerTransportPlugin,
  ServerTransportListenAddress, and ServerTransportOptions options,
when the relay module is disabled.

Part of 32213.
This commit is contained in:
teor 2019-10-31 11:49:17 +10:00
parent 4d9a5c77f8
commit 2dfd18018f

View File

@ -19,13 +19,13 @@
typedef struct or_options_t or_options_t;
typedef struct smartlist_t smartlist_t;
char *get_transport_bindaddr_from_config(const char *transport);
smartlist_t *get_options_for_server_transport(const char *transport);
int options_validate_server_transport(const or_options_t *old_options,
or_options_t *options,
char **msg);
char *get_transport_bindaddr_from_config(const char *transport);
smartlist_t *get_options_for_server_transport(const char *transport);
int options_act_server_transport(const or_options_t *old_options);
#ifdef RELAY_TRANSPORT_CONFIG_PRIVATE
@ -38,6 +38,36 @@ STATIC smartlist_t *get_options_from_transport_options_line(
#else
/** When tor is compiled with the relay module disabled, it can't be
* configured with server pluggable transports.
*
* Returns -1 and sets msg to a newly allocated string, if ExtORPort,
* ServerTransportPlugin, ServerTransportListenAddr, or
* ServerTransportOptions are set in options. Otherwise returns 0. */
static inline int
options_validate_server_transport(const or_options_t *old_options,
or_options_t *options,
char **msg)
{
(void)old_options;
/* These ExtORPort checks are too strict, and will reject valid configs
* that disable ports, like "ExtORPort 0". */
if (options->ServerTransportPlugin ||
options->ServerTransportListenAddr ||
options->ServerTransportOptions ||
options->ExtORPort_lines) {
/* REJECT() this configuration */
*msg = tor_strdup("This tor was built with relay mode disabled. "
"It can not be configured with an ExtORPort, "
"a ServerTransportPlugin, a ServerTransportListenAddr, "
"or ServerTransportOptions.");
return -1;
}
return 0;
}
#define get_transport_bindaddr_from_config(transport) \
(((void)(transport)),NULL)