]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Apply all patches in:
authorGavin Henry <ghenry@suretecsystems.com>
Mon, 26 Jul 2010 20:25:54 +0000 (20:25 +0000)
committerGavin Henry <ghenry@suretecsystems.com>
Mon, 26 Jul 2010 20:25:54 +0000 (20:25 +0000)
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: https://origsvn.digium.com/svn/asterisk/branches/1.6.2@279597 65c4cc65-6c06-0410-ace0-fbb531ad65f3

res/res_config_ldap.c

index d02353383ad6f0b68fe98f2c337513c554f39cf1..ea2ad749af29d7993c69d84295dfb8c3610f2959 100644 (file)
@@ -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 = 3;
 static time_t connect_time;
@@ -938,10 +938,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)
 {
+        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) {
@@ -959,6 +973,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;