aboutsummaryrefslogtreecommitdiffstats
path: root/res
diff options
context:
space:
mode:
authortilghman <tilghman@f38db490-d61c-443f-a65b-d21fe96a405b>2010-07-26 21:07:45 +0000
committertilghman <tilghman@f38db490-d61c-443f-a65b-d21fe96a405b>2010-07-26 21:07:45 +0000
commit5ce0e42880f7eddfb8fc6adb31ed3d4399dbc10d (patch)
tree40609834163deeb96e59583b1e0918ee29feb711 /res
parentc97cb9cbd3950da7e49dd8520dca8254f6e7b0b4 (diff)
Merged revisions 279597 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ........ r279597 | ghenry | 2010-07-26 15:25:54 -0500 (Mon, 26 Jul 2010) | 13 lines Apply all patches in: https://issues.asterisk.org/view.php?id=13573 (closes issue #13573) Reported by: navkumar Patches: res_config_ldap-category.diff uploaded by navkumar (license 580) res_config_ldap.patch uploaded by bencer (license 961) res_config_ldap uploaded by bencer (license 961) Tested by: suretec ........ git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.8@279601 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'res')
-rw-r--r--res/res_config_ldap.c28
1 files changed, 23 insertions, 5 deletions
diff --git a/res/res_config_ldap.c b/res/res_config_ldap.c
index 6bd992da9..9d5189bed 100644
--- a/res/res_config_ldap.c
+++ b/res/res_config_ldap.c
@@ -65,7 +65,7 @@ AST_MUTEX_DEFINE_STATIC(ldap_lock);
static LDAP *ldapConn;
static char url[512];
static char user[512];
-static char pass[50];
+static char pass[512];
static char base_distinguished_name[512];
static int version;
static time_t connect_time;
@@ -84,8 +84,8 @@ struct category_and_metric {
/*! \brief Table configuration */
struct ldap_table_config {
- char *table_name; /*!< table name */
- char *additional_filter; /*!< additional filter */
+ char *table_name; /*!< table name */
+ char *additional_filter; /*!< additional filter */
struct ast_variable *attributes; /*!< attribute names conversion */
struct ast_variable *delimiters; /*!< the current delimiter is semicolon, so we are not using this variable */
AST_LIST_ENTRY(ldap_table_config) entry;
@@ -955,9 +955,24 @@ static struct ast_variable *realtime_ldap(const char *basedn,
static struct ast_config *realtime_multi_ldap(const char *basedn,
const char *table_name, va_list ap)
{
- struct ast_variable **vars = realtime_ldap_base_ap(NULL, basedn, table_name, ap);
+ char *op;
+ const char *initfield = NULL;
+ const char *newparam, *newval;
+ struct ast_variable **vars =
+ realtime_ldap_base_ap(NULL, basedn, table_name, ap);
struct ast_config *cfg = NULL;
+ newparam = va_arg(ap, const char *);
+ newval = va_arg(ap, const char *);
+ if (!newparam || !newval) {
+ ast_log(LOG_WARNING, "realtime retrieval requires at least 1 parameter and 1 value to search on.\n");
+ return NULL;
+ }
+ initfield = ast_strdupa(newparam);
+ if ((op = strchr(initfield, ' '))) {
+ *op = '\0';
+ }
+
if (vars) {
cfg = ast_config_new();
if (!cfg) {
@@ -975,6 +990,9 @@ static struct ast_config *realtime_multi_ldap(const char *basedn,
struct ast_variable *var = *p;
while (var) {
struct ast_variable *next = var->next;
+ if (initfield && !strcmp(initfield, var->name)) {
+ ast_category_rename(cat, var->value);
+ }
var->next = NULL;
ast_variable_append(cat, var);
var = next;
@@ -1746,7 +1764,7 @@ static char *realtime_ldap_status(struct ast_cli_entry *e, int cmd, struct ast_c
e->command = "realtime show ldap status";
e->usage =
"Usage: realtime show ldap status\n"
- " Shows connection information for the LDAP RealTime driver\n";
+ " Shows connection information for the LDAP RealTime driver\n";
return NULL;
case CLI_GENERATE:
return NULL;