diff options
author | Arthur de Jong <arthur@arthurdejong.org> | 2014-01-05 18:32:21 +0100 |
---|---|---|
committer | Arthur de Jong <arthur@arthurdejong.org> | 2014-01-05 22:08:40 +0100 |
commit | 3992e15ffd0a4f0d8130b6ac25163ab90d064c27 (patch) | |
tree | de933274f7923ae3aea990da7171d2e01a3ff460 | |
parent | 15ee2fce08794ec82d2a08b9c01339c0db0a4725 (diff) |
Skip member attributes in bymember search
This changes the group by member searches to not request the member
attributes. This will speed up result parsing by a fraction because less
data is transferred but will also cause the deref control not to be
added to these searches.
-rw-r--r-- | nslcd/group.c | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/nslcd/group.c b/nslcd/group.c index 1455930..da0653d 100644 --- a/nslcd/group.c +++ b/nslcd/group.c @@ -78,6 +78,9 @@ static const char *default_group_userPassword = "*"; /* unmatchable */ /* the attribute list to request with searches */ static const char **group_attrs = NULL; +/* the attribute list for bymember searches (without member attributes) */ +static const char **group_bymember_attrs = NULL; + /* create a search filter for searching a group entry by name, return -1 on errors */ static int mkfilter_group_byname(const char *name, @@ -181,6 +184,18 @@ void group_init(void) exit(EXIT_FAILURE); } set_free(set); + /* set up bymember attribute list */ + set = set_new(); + attmap_add_attributes(set, attmap_group_cn); + attmap_add_attributes(set, attmap_group_userPassword); + attmap_add_attributes(set, attmap_group_gidNumber); + group_bymember_attrs = set_tolist(set); + if (group_bymember_attrs == NULL) + { + log_log(LOG_CRIT, "malloc() failed to allocate memory"); + exit(EXIT_FAILURE); + } + set_free(set); } static int do_write_group(TFILE *fp, MYLDAP_ENTRY *entry, @@ -447,7 +462,7 @@ int nslcd_group_bymember(TFILE *fp, MYLDAP_SESSION *session) { /* do the LDAP search */ search = myldap_search(session, base, group_scope, filter, - group_attrs, NULL); + group_bymember_attrs, NULL); if (search == NULL) { if (seen != NULL) @@ -497,7 +512,7 @@ int nslcd_group_bymember(TFILE *fp, MYLDAP_SESSION *session) /* do the LDAP searches */ for (i = 0; (base = group_bases[i]) != NULL; i++) { - search = myldap_search(session, base, group_scope, filter, group_attrs, NULL); + search = myldap_search(session, base, group_scope, filter, group_bymember_attrs, NULL); if (search != NULL) { while ((entry = myldap_get_entry(search, NULL)) != NULL) |