Merged revisions 279601 via svnmerge from
authorTilghman Lesher <tilghman@meg.abyt.es>
Mon, 26 Jul 2010 21:08:24 +0000 (21:08 +0000)
committerTilghman Lesher <tilghman@meg.abyt.es>
Mon, 26 Jul 2010 21:08:24 +0000 (21:08 +0000)
https://origsvn.digium.com/svn/asterisk/branches/1.8

................
  r279601 | tilghman | 2010-07-26 16:07:45 -0500 (Mon, 26 Jul 2010) | 19 lines

  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: https://origsvn.digium.com/svn/asterisk/trunk@279602 65c4cc65-6c06-0410-ace0-fbb531ad65f3

res/res_config_ldap.c

index 6bd992d..9d5189b 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;
 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;