[Date Prev][Date Next]
[Chronological]
[Thread]
[Top]
Re: ldap_search returning protocol error?
At 09:49 AM 2002-09-19, Hank Beatty - StarBand - MRT wrote:
>I'm working on a program that utilizes the ldap_search function and it
>appears that it is returning a protocol error.
ldap_search does not return an LDAP result code, it
returns returns either 0 (success) or -1 (error).
Calling ldap_err2string() on the return value of ldap_search()
makes no sense. ldap_err2string() expects a result code,
not -1. It likely returns "Unknown error" in this case.
>All of the functions leading up to the search work fine.
>
>Any help would be great.
>
>Thanks,
>Hank
>
>options_str =
>ldap://server.domain.com/dc=domain,dc=com?attribute?sub?(username=%25s)
>key_str = username
>
>static LDAPURLDesc *ludp;
>
>
>
>int dbserver_get(
> const char *key_str,
> const char *options_str,
> char **str_return,
> int *len_return
> ){
> LDAP *connection = NULL;
> LDAPMessage *res = NULL;
> LDAPMessage *mptr = NULL;
> BerElement *ber = NULL;
> int count;
> int attrcount = 0;
> int status = -1;
> int ret_val;
> char *pstr;
> char **bv_val = NULL;
> char *filter = NULL;
> char **ldap_returns = NULL;
> char critical;
> char *binddn=NULL;
> char *bindpw=NULL;
> char *cLdapReturnVal;
>
> extern options_t opt;
>
> *len_return = 0;
>
> if (ldap_is_ldap_url(options_str) == 0) {
> return(-1);
> }
> if (ldap_url_parse(options_str, &ludp) != 0) {
> return(-1);
> }
> /* Open LDAP connection */
> if ((connection = ldap_init(ludp->lud_host, ludp->lud_port)) ==
>NULL) {
> return(-1);
> }
> if (ldap_bind_s(connection, binddn, bindpw, LDAP_AUTH_SIMPLE)
> != LDAP_SUCCESS) {
> goto leave;
> }
> /* Build a filter string */
> if ((filter = (char *)malloc(strlen(key_str) +
>
>strlen(ludp->lud_filter))) == NULL) {
> PERDITION_DEBUG_ERRNO("filter malloc");
> status = -3;
> goto leave;
> }
> sprintf(filter, ludp->lud_filter, key_str);
>
> /* Perform the search */
> ret_val = ldap_search(connection, ludp->lud_dn, ludp->lud_scope,
>filter, ludp->lud_attrs, 0);
>
>
> if (ret_val != LDAP_SUCCESS) {
> cLdapReturnVal = ldap_err2string(ret_val);
> openlog("myLittleProgram", LOG_PID, LOG_LOCAL0);
> syslog(LOG_NOTICE, "Performed the search and it died
>%d", ret_val);
> syslog(LOG_NOTICE, "Function ldap_search() failed:
>%s\n", cLdapReturnVal);
> closelog();
> goto leave;
> }
> free(filter);
> filter = NULL;
>
> etc.
>