[Date Prev][Date Next] [Chronological] [Thread] [Top]

Re: using ldap_get_values_len (ITS#3318)


I have written a client that uses the following code to parse the ldap results
    // retrieve the attribute values and create the attribute object
    for (attr=ldap_first_attribute(ld, entry,&ber);
        attr !=NULL;
        attr=ldap_next_attribute(ld, entry, ber))
         printf("attr = %d\n",attr);
        if ((vals =ldap_get_values_len(ld,entry,attr)) != NULL)
            printf("val = %d\n",vals);
			// creating an object of values
            if ((tmp_attr=new DGLdapAttributeImpl(attr,vals)) != NULL)
			// add the attr object to a vector

            char tmp_err[ERR_STR_LEN];
            // get the ldap return code and throw an exception. Since I could
		// not get an error I decided to set one myself
            int rc=LDAP_OPERATIONS_ERROR;
            CRDEBUG(DG_VERBOSE, ("ldap_value_free_len failure rc=%d, errString=%
            DGLdapException LdapFailure(SEARCH_FAIL, tmp_err,rc);




What I am finding is that when a query is sent to the server with no attributes
and a filter of (objectclass=*). sometimes I receive back a full set of values
and sometimes the vals object is NIL. I assumed that the ldap result object
would have an error result but I dont seem to be able to retrieve any errors.
This is being done in a mutithreaded program but the LDAP connection object is
not being shared across threads. ie each thread establishes their own connection.

Am I doing something wrong or is there an issue with openldap where the results
returned from a default openldap server with a BDB are not always consistent.


On 9/2/2004 8:15 PM, Kurt Zeilenga wrote:
> It is not clear from your message precise what issue you are
> attempting to report.  Please be more specific, including
> sufficient information such that a developer could recreate
> the issue.  Also, you should verify that whatever issue you
> have exists in the latest release (or at least the latest
> "stable" release) of OpenLDAP Software.