Mercurial > dovecot > original-hg > dovecot-1.2
diff src/auth/db-ldap.c @ 3306:aebed9a9edac HEAD
If both userdb and passdb used LDAP the later one was overriding first one's
attribute names.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Sun, 17 Apr 2005 19:52:00 +0300 |
parents | eb840633c9bf |
children | 9096b7957413 |
line wrap: on
line diff
--- a/src/auth/db-ldap.c Sun Apr 17 19:37:37 2005 +0300 +++ b/src/auth/db-ldap.c Sun Apr 17 19:52:00 2005 +0300 @@ -269,6 +269,7 @@ } void db_ldap_set_attrs(struct ldap_connection *conn, const char *attrlist, + char ***attr_names_r, struct hash_table *attr_map, const char *const default_attr_map[]) { const char *const *attr; @@ -283,7 +284,7 @@ /* @UNSAFE */ for (size = 0; attr[size] != NULL; size++) ; - conn->attr_names = p_new(conn->pool, char *, size + 1); + *attr_names_r = p_new(conn->pool, char *, size + 1); for (i = 0; i < size; i++) { p = strchr(attr[i], '='); @@ -296,9 +297,9 @@ value = p_strdup(conn->pool, p + 1); } - conn->attr_names[i] = name; + (*attr_names_r)[i] = name; if (*name != '\0') - hash_insert(conn->attr_map, name, value); + hash_insert(attr_map, name, value); if (*default_attr_map != NULL) default_attr_map++; @@ -372,8 +373,6 @@ conn->refcount = 1; conn->requests = hash_create(default_pool, pool, 0, NULL, NULL); - conn->attr_map = hash_create(default_pool, pool, 0, str_hash, - (hash_cmp_callback_t *)strcmp); conn->config_path = p_strdup(pool, config_path); conn->set = default_ldap_settings; @@ -400,7 +399,10 @@ ldap_conn_close(conn); hash_destroy(conn->requests); - hash_destroy(conn->attr_map); + if (conn->pass_attr_map != NULL) + hash_destroy(conn->pass_attr_map); + if (conn->user_attr_map != NULL) + hash_destroy(conn->user_attr_map); pool_unref(conn->pool); }