Фильтр LDAP не рассматривается - PullRequest
0 голосов
/ 09 марта 2010

Я выполняю поисковый запрос LDAP в C, например:

ldap_search_ext_s(ld, BASEDN, SCOPE, FILTER, attrs, 0, NULL, NULL, NULL, LDAP_NO_LIMIT, &res);

Мой поиск работает нормально, кроме случаев, когда я пытаюсь указать FILTER; #define FILTER "uid=*", то есть, когда я пытаюсь запустить поиск всех записей LDAP с помощью uid.

К сожалению, мой код просто возвращает первую запись для каждого найденного результата. Таким образом, мой код может найти 50 результатов, но вернет первую запись 50 раз.

Кто-нибудь может заподозрить, что я тут не так делаю?

РЕДАКТИРОВАТЬ: я перехожу мои результаты, например, так:

for (msg = ldap_first_message(ld, res); msg != NULL; msg = ldap_next_message(ld, msg))

Любая помощь очень ценится. Рикки.

Ответы [ 3 ]

1 голос
/ 11 марта 2010

Извините всех. Мой друг указал, что я должен передавать msg командам ldap_first_entry и т.п. Это решило проблему и возвращало каждый результат в отдельности.

Спасибо за вашу помощь. Рикки.

1 голос
/ 10 марта 2010

Как вы проходите через результаты? Ваш код должен выглядеть примерно так:

LDAPMessage *entry;

for (entry = ldap_first_entry(ld, res); entry != NULL; entry = ldap_next_entry(ld, entry)
{
    /* Examine "entry" */
}

В частности, убедитесь, что вы передаете entry на ldap_next_entry, а не res.

0 голосов
/ 11 марта 2010

Проверяли ли вы, что при работе запрос работает, как ожидалось, например, инструмент поиска в командной строке (при условии, что у вас есть доступные утилиты OpenLDAP)?

ldapsearch -b BASEDN '(uid=*)'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...