mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-19 19:52:48 +00:00
res_config_ldap: Fix configuration inheritance from _general
The "_general" configuration section allows administrators to provide both general configuration options (host, port, url, etc.) as well as a global realtime-to-LDAP-attribute mapping that is a fallback if one of the later sections do not override it. This neglected to exclude the general configuration options from the mapping. As an example, during my testing, chan_sip requested 'port' from realtime, and because I did not have it defined, it pulled in the 'port' configuration option from "_general." We now filter those out explicitly. Change-Id: I1fc61560bf96b8ba623063cfb7e0a49c4690d778
This commit is contained in:
@@ -1684,6 +1684,21 @@ static int reload(void)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int config_can_be_inherited(const char *key)
|
||||
{
|
||||
int i;
|
||||
static const char * const config[] = {
|
||||
"basedn", "host", "pass", "port", "protocol", "url", "user", "version", NULL
|
||||
};
|
||||
|
||||
for (i = 0; config[i]; i++) {
|
||||
if (!strcasecmp(key, config[i])) {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
/*! \brief parse the configuration file
|
||||
*/
|
||||
static int parse_config(void)
|
||||
@@ -1774,7 +1789,9 @@ static int parse_config(void)
|
||||
if (!strcasecmp(var->name, "additionalFilter")) {
|
||||
table_config->additional_filter = ast_strdup(var->value);
|
||||
} else {
|
||||
ldap_table_config_add_attribute(table_config, var->name, var->value);
|
||||
if (!is_general || config_can_be_inherited(var->name)) {
|
||||
ldap_table_config_add_attribute(table_config, var->name, var->value);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user