Full_Name: Jiri Giesl
Version: 2.3.43
OS: Linux
URL: ftp://ftp.openldap.org/incoming/
Submission from: (NULL) (212.111.5.220)
We tried to estalish connection to LDAP server by our own (because of
proxy
usage) and then use "ldap_open_internal_connection" function to initialize
internal structures of openldap. After successful SASL binding we realized
that
the connection to LDAP server has been closed. We found out that there is
checking for reference count in "wait4msg" function (result.c file) this
way:
if ( lc->lconn_refcnt<= 1 )
During classic initialization and SASL binding we get 2 references,
however when
using "ldap_open_internal_connection" and SASL binding we get only 1
reference.
We realized that in "ldap_open_defconn" (function which is called for
establishing of a new connection) there is reference counter which is
increased
this way:
++ld->ld_defconn->lconn_refcnt; /* so it never gets closed/freed */
When we added this incrementation also into
"ldap_open_internal_connection"
(open.c file), everything goes well (it is obvious).
Are we wrong or this is really minor bug (missing incrementation of
reference
counter in "ldap_open_internal_connection")?
Your comment sounds fine; however, it's hard to judge: that code is
essentially untouched since 2000 (Mark Adamson) and it is not (or no
longer) used elsewhere in OpenLDAP code. I'd vote for adding a
here as well, unless someone else has valid objections.