Posting on behalf of Sushmita ([EMAIL PROTECTED]), since
she is not in the mozilla "whitelist" :
---------------------------------------------------
Hi,
I am implementing an LDAP client using Netscape LDAP sdk 5.
The client fires async ldap searches and keeps polling for results
in a loop. Every request is associated with a timer so that every
request is polled for only a fixed amout of time. This timer
has nothing to do with the timeout specified in the LDAP sdk APIs.
If no results were obtained within the specified timeout value, I abandon
the
request using ldap_abandon_ext. Please note that while polling
I am not blocked on the ldap_result call since the timeval value
passed to ldap_result is 0,0 for tv_sec and tv_usec.
I am facing a very rapid growth in memory with the following scenario:
- search requests fired at the rate of 100 per sec
- the LDAP server is very slow and is not able to respond within
the specified timeout value for every search, causing most (90 out of a
total of 100 requests) to timeout and thus abandoned.
The memory is going down only when I call an unbind on the ldap handle.
I looked into the code of result.c and found the following:
- in function read1msg(), a ber element is allocated.
However it is not being freed in the following cases:
- ber_get_next() does not return LDAP_TAG_MESSAGE
(line 500 - 513)
- ber_get_int() returns LBER_ERROR (line 523-526)
I had some other questions regarding LDAP_RES_UNSOLICITED :
- Under what conditions is LDAP_RES_UNSOLICITED returned from the
Ldap server?
- How should the LDAPMessage allocated on obtaining a
LDAP_RES_UNSOLICITED
be freed?
Thanks and regards,
Sushmita ([EMAIL PROTECTED])