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

Re: using ldap_get_values_len (ITS#3318)



For the information you provide, I cannot conclude that the behavior
you are describing is due to a bug in OpenLDAP Software.  As you
indicate yourself, you could be doing something wrong.  This is
most likely the case as others are not reporting problems with this
commonly used interface.  Hence, I suggest you investigate more and,
if you have questions regarding proper use of the library, direct
such to OpenLDAP-Software list.

- Kurt

At 06:53 PM 9/2/2004, kirkr@lucent.com wrote:
>Kurt,
>
>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
>                attributes->push_back(tmp_attr);
>                //(*attributes)[count++]=tmp_attr;
>
>            }
>            ldap_value_free_len(vals);
>        }
>        else
>        {
>            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;
>            strcpy(tmp_err,ldap_err2string(rc));
>            CRDEBUG(DG_VERBOSE, ("ldap_value_free_len failure rc=%d, errString=%
>s",rc,tmp_err));
>            DGLdapException LdapFailure(SEARCH_FAIL, tmp_err,rc);
>            throw(LdapFailure);
>
>
>        }
>
>        ldap_memfree(attr);
>
>-------------------------------------------------------------------------------
>
>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.
>
>Kirk
>
>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.
>>