The problem lies in ldap_search and lies in the result.c module in lines 537-546
which are as follows:-
/* return the whole chain if that's what we were looking for */
if( foundit ) {
if( prev == NULLMSG )
ld->ld_responses = l->lm_next;
else
prev->lm_next = l->lm_next;
*result = l;
ld->ld_errno = LDAP_SUCCESS;
return( tag );
Here l is the list of LDAPMessages unfortunately 'tag' is from the last message
received from X500 (LDAP_RES_SEARCH_RESULT) whereas I believe that what should
be returned is from the first message in the chain ie return( l->lm_msgtype );
Please confirm this by EMail to 'mick@uk.ibm.com' who will forward it to me as I
do not have an IBM internet address.
Also I have been requested to implement the X500 'LIST' function and I have a
number of queries with respect to LDAPD for a starter do the LDAP_REQ_xxx values
have any specific meanings or are they arbitrary. Any help that you can give me
would be greatly appreciated.
(I am aware of the workaround using SEARCH as used in the web browser code but
this is horrendously slow on IBM's very large dictionary).
Malcolm G. Boff