From: Gavin Henry Date: Mon, 26 Jul 2010 20:25:54 +0000 (+0000) Subject: Apply all patches in: X-Git-Tag: 1.6.2.12-rc1~50 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=27e93500bc5b3dc8ff97b1a94adff4b56b6b4a8a;p=thirdparty%2Fasterisk.git 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: https://origsvn.digium.com/svn/asterisk/branches/1.6.2@279597 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/res/res_config_ldap.c b/res/res_config_ldap.c index d02353383a..ea2ad749af 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 = 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;