On Thu, 28 Mar 2002, Lawrence Walton wrote:
> here we go
[and sent me a full error log]
I'm afraid I'm not going to be very helpful here. I am not an LDAP
expert in any sense. I couldn't glean anything useful from the Exim
debug output at all.
> database lookup required for ldap:///uid=larryw,ou=people,ou=business,dc=otak.com,o=top?uid
> LDAP parameters: user=NULL pass=NULL size=0 time=0
> perform_ldap_search: ldap URL ="ldap:///uid=larryw,ou=people,ou=business,dc=otak.com,o=top?uid" server=127.0.0.1 port=389 sizelimit=0 timelimit=0
> Re-using cached connection to LDAP server 127.0.0.1:389
> Start search
> search ended by ldap_result yielding -1
> ldap_result failed
> exim: /home/wichert/ldap/openldap2-2.0.23/libraries/libldap/error.c:221: ldap_parse_result: Assertion `r != ((void *)0)' failed.
It appears that LDAP encountered some kind of error, hence the -1
response from ldap_result(). Exim says "ldap_result failed", and then
tries to extract error information from LDAP by calling
ldap_err2string() (in the case of OpenLDAP2). I presume this is calling
ldap_parse_result() internally, because Exim doesn't call it directly.
It was pointed out recently that this doesn't work if the value of the
"result" variable is NULL, and I modified Exim 4 to avoid calling
ldap_err2string() in this situation. This prevents things from crashing.
However, all the information you have is "There was a problem with
LDAP", which isn't very helpful.
If there are any LDAP experts reading this who know what to do in order
to get more details of what has gone wrong when ldap_result() yields -1
and the result value is NULL, I'd like to hear from you!
Meanwhile, are there any logs that LDAP itself keeps? Will it have
recorded the error somewhere?
--
Philip Hazel University of Cambridge Computing Service,
ph10@??? Cambridge, England. Phone: +44 1223 334714.